Кросс-концевая рамочная рамочная рамочная глубина Hengping

uni-app

Предисловие: следующая статья была выпущена в апреле 2019 г., а также выпущена ознакомительная версия 2020 г. Нажмите, чтобы получить последнюю оценку:Углубленный фреймворк кросс-энд разработки Hengping 2020 Edition

На прошлой неделе команда Taro выпустила «Всестороннюю оценку многотерминальных фреймворков для небольших программ», которая дала разработчикам предварительное представление об основных кросс-терминальных фреймворках в отрасли. Спасибо команде Таро за их усилия.

Однако для совершенствования этого дела требуется много времени. Вместо того, чтобы просто смотреть документацию, требуется:

  • Напишите реальную тестовую демонстрацию нескольких платформ и сравните функции и производительность каждой платформы. Соответствует ли их реальная ситуация заявленной в документе?
  • Действительно изучить каждый фреймворк, понять их кривую обучения и почувствовать, как насчет их документации, учебных пособий, экологии сообщества и возможностей технического обслуживания при столкновении с проблемами в реальной разработке?

насuni-appКоманда потратила неделю на завершение этой углубленной оценки, а теперь мы поделимся проблемами, возникающими при реальной разработке тестовых случаев для разных фреймворков, и окончательными результатами тестирования.

Введение в оценочные эксперименты

  • Контент для разработки: разработка сложного длинного списка, имитирующего домашнюю страницу апплета Weibo, поддержка всплывающего обновления, переворачивания страниц и т. д.

  • Интерфейс выглядит следующим образом:

  • Версия для разработчиков: всего было разработано 6 версий, включая нативную версию WeChat, версию wepy, версию mpvue, версию таро, версию uni-app и версию хамелеона (отсортированные по времени выпуска этих продуктов, то же самое ниже).cliМетод установлен по умолчанию (должна быть последняя стабильная версия).

  • Тестовый код с открытым исходным кодомАдрес репозитория Github: https://github.com/dcloudio/test-framework),Советы. Если некоторые учащиеся считают, что код теста написан неправильно, отправьте PR илиIssus

  • Тестовые модели: Redmi 6 Pro, стабильная версия MIUI 10.2.2.0 (последняя версия), WeChat версии 7.0.3 (последняя версия)

  • Тестовая среда: перед тем, как каждая платформа начнет тестирование, завершите каждый процесс приложения и очистите память, чтобы убедиться, что среда тестовой машины в основном одинакова; каждый раз считывайте статические данные с локального компьютера, чтобы скрыть различия в сети.

  • Размер теста:

    1. Как насчет кросс-энд поддержки?
    2. Как производительность?
    3. порог обучения
    4. Инструменты и окружающая экология

1. Что такое кросс-энд поддержка?

Разработать один раз, запустить везде — мечта каждого программиста. Но реальность часто становится развитием один раз и совершением ошибок везде.

Действительно ли оцениваемые фреймворки разрабатывались в одно время и выпускались на разных концах, как рекламируется?

Мы будем вышеИмитация приложения WeiboПубликуйте на каждую платформу по очереди и проверяйте совместимость каждого фреймворка на каждом конце.Результаты следующие (таблица длинная, для просмотра нужно листать влево-вправо):

Платформа Нативный WeChat wepy mpvue taro uni-app chameleon
Апплет WeChat ⭕️ ⭕️ ⭕️ ⭕️ ⭕️ ⭕️
Апплет Alipay ⭕️ ⭕️ ⭕️ Вытягивание для обновления не может быть остановлено
Апплет Baidu ⭕️ ⭕️ ⭕️ Вытягивание для обновления не может быть остановлено
апплет заголовка ⭕️ ⭕️ ⭕️
Терминал H5 Подтягивающая загрузка/вытягивающее обновление недействительны ⭕️ Подтягивающая загрузка/вытягивающее обновление недействительны
Конец приложения Загрузка с подтягиванием не удалась ⭕️ Список не может прокручиваться, не может тестировать подтягивающую загрузку/вытягивающее обновление

Описание результатов теста:

  • ⭕ означает поддержку и нормальную работу, ❌ означает не поддерживается, другие означают поддержку, но есть некоторые ошибки или проблемы с совместимостью
  • wepyВерсия 2.0 утверждает, что поддерживает другие небольшие программы, этот тест основан наwepyОфициальный сайт инструктирует по установкеwepy-cliВерсия по умолчанию 1.7.3, мультитерминал пока не поддерживается.
  • chameleonОфициальный сайт не найденstopPullDownRefreshОпределение (дата просмотра: 2019.04.01), остановка обновления раскрывающегося списка страниц должна быть написана на разных платформах

На этом простом примере мы видим, что вывод оценки кросс-эндовой поддержки:uni-app > taro > chameleon > mpvue >wepy,原生微信小程序

Однако только приведенный выше тест не является всеобъемлющим, а реальный бизнес намного сложнее, чем этот тестовый пример. Однако мы не можем разработать много сложных бизнесов для оценки, поэтому нам необходимо дополнить информацию по разным документам. Поскольку в документации каждой платформы описывается степень перекрестной поддержки различных компонентов и API. Мы просмотрели документы нескольких компаний и обнаружили, что каждая из них в основном брала апплет WeChat за основу, а затем реализовывала различные компоненты и API на другом конце:

  • taro: Сторона H5 реализует большинство API WeChat, и разница между стороной приложения и WeChat относительно велика.
  • uni-app: Компоненты, API и конфигурации, большинство из которых были реализованы со всех сторон, а некоторые API имеют инструкции о том, что они не поддерживаются на некоторых сторонах. Видно, что в uni-app полностью реализован симулятор WeChat на стороне H5 и механизм апплета WeChat на стороне приложения для достижения относительно полной совместимости с платформой.
  • chameleon: некоторые очень часто используемые компоненты и API-интерфейсы были реализованы на каждом конце, и в этой части есть несколько различий между платформами. Однако большое количество компонентов и API требуют от разработчиков написания кода на их собственных платформах.

Для кросс-энд фреймворка, с одной стороны, необходимо учитывать кросс-энд поддержку общего API, предоставляемого фреймворком, и в то же время необходимо учитывать, насколько различаются характеристики разных концы совместимы. Ведь каждый конец будет иметь свои особенности, и быть полностью последовательным невозможно.

  • taro: Предоставляет многоконечные файлы для оценки переменных среды js и унифицированный интерфейс, который может расширять многоконечность в компонентах, js и файлах и не поддерживает обработку подплатформы в других ссылках.
  • uni-app: Предоставляет модель условной компиляции.Все коды, включая компоненты, js, css, конфигурацию json, файлы и каталоги, поддерживают условную компиляцию и могут писать разный код на разных концах без ограничений.
  • chameleon: Предоставляет полиморфное решение, которое может расширять несколько терминалов с точки зрения компонентов, js и файлов и не поддерживает другие методы обработки подплатформы.

Кросс-конечная структура также включает в себя кросс-конечную проблему пользовательского интерфейса.Результаты оценки следующие:

  • taro: Официально предоставленоtaro ui, поддерживает небольшие программы (WeChat/Alipay/Baidu), платформу H5, не поддерживает приложение,смотрите подробности
  • uni-app: Официально предоставленоuni ui, может работать со всех сторон; uni-app также имеет рынок плагинов, который содержит множество сторонних компонентов пользовательского интерфейса,смотрите подробности
  • chameleon: Официально предоставленоcml-uiРасширенная библиотека компонентов, которая может работать в полную силу, но количество компонентов немного меньше,смотрите подробности

Наконец, добавьте перекрестный случай:

  • mpvue: Терминальные случаи Wechat богаты, но других терминальных случаев замечено не было.
  • Таро: Есть много кейсов на WeChat, а также несколько кейсов на Baidu, Alipay и H5.
  • uni-app: Wechat, App, H5 три терминальных случая богаты, официальный пример был выпущен для 6 терминала
  • хамелеон: не видно конечного регистра

На основании вышеизложенной информации окончательный вывод об оценке по этому пункту выглядит следующим образом:uni-app > taro > chameleon > mpvue > wepy,原生微信小程序

Друг и бизнесмен затеяли спор между истинным кросс-эндом и псевдо-кросс-эндом, и этот спор может быть завершен на основе фактического измерения этого демо.

2. Как работает кросс-энд фреймворк?

Кросс-энд фреймворк в основномcompiler + runtimeрежим, введенныйruntimeСнизит ли это производительность?

В частности, как производительность по сравнению с разработкой нативных мини-программ WeChat, это вопрос, который вообще всех волнует.

Мы по-прежнему возьмем приведенный выше апплет-имитация Weibo в качестве примера, чтобы протестировать два момента, которые подвержены проблемам с производительностью: загрузка длинного списка и отклик большого количества лайков компонентов.

2.1 Загрузка длинного списка

Список имитации Weibo — это список со многими компонентами, такой сложный список оказывает большее давление на производительность и очень подходит для тестирования производительности.

Требуется точное время от запуска подтягивающей загрузки до обновления данных и завершения рендеринга страницы. Человеческого зрительного хронометража явно недостаточно, мы применяем метод встраивания программ и формулируем следующий хронометраж:

  • Время начала синхронизации: событие взаимодействия запускается до назначения кадра, например: начало функции загрузки подтягивания (onReachBottom)
  • Время окончания времени: рендеринг страницы завершен (начало функции обратного вызова WeChat setData)

Советы:setDataНачало функции обратного вызова можно считать моментом завершения рендеринга страницы, т.к. WeChatsetDataопределяется следующим образом (Спецификация WeChat):

поле Типы Необходимый описывать
data Object да Данные, которые будут изменены на этот раз
callback Function нет Обновление пользовательского интерфейса, вызванное setDataВизуализированофункция обратного вызова после

Метод тестирования: начиная с пустого списка на странице, программа автоматически запускает подтягивающую загрузку, каждый раз добавляя 20 списков и записывая время, затрачиваемое за один раз; запуская N раз подтягивающей загрузки непрерывно при фиксированной интервалы, чтобы страница достигла 20 * N списков, вычислить это N раз触发上拉 -> 渲染完成среднее время.

Результаты теста следующие (таблица длинная, для просмотра нужно листать влево-вправо):

количество списков Нативный WeChat wepy mpvue taro uni-app chameleon
200 770 625 969 752 641 1261
400 876 781 4493 974 741 1970
600 1111 - - 1250 910 2917
800 1406 - - 1547 1113 4040
1000 1690 - - 1878 1321 5196

Описание: Возьмем в качестве примера список из 400 микроблогов, начиная с пустого списка на странице, запуская подтягивающую загрузку каждую 1 секунду (добавляется 20 новых микроблогов), записывайте время, затрачиваемое на один раз, и останавливайтесь. после запуска 20 раз (страница достигает 400 Weibo), посчитайте среднее время этих 20 раз, и в результате получится, что WeChat является нативным в эти 20 раз.触发上拉 -> 渲染完成Среднее время — 876 миллисекунд, самое быстроеuni-appсоставляет 741 мс, самый медленный mpvue — 4493 мс

При первом взгляде на эти данные вы можете растеряться, не волнуйтесь, ниже есть подробная инструкция.

Объяснение 1: Почему данные теста mpvue/wepy неполные?

mpvue,wepyВ начале своего рождения мини-программы WeChat не поддерживалипользовательский компонент, разработка компонента не может быть выполнена;mpvue,wepyДля решения этой проблемы пользователь написалVueкомпонент, составленный какWXMLсерединашаблон, замаскированный для достижения возможностей разработки компонентов и улучшения возможности повторного использования кода, что является отличным техническим решением в технических условиях того времени.

Однако в этой схеме на страницах с множеством сложных компонентов количество dom-узлов будет сильно увеличено, даже превысив лимит количества dom-узлов WeChat. Мы измеряли на Redmi 6 Pro, когда компонентов страницы более 500,mpvue,wepyРеализованное имитационное приложение Weibo сообщит о следующем исключении и прекратит рендеринг.Поэтому, когда эти две тестовые среды имеют много компонентов, тестовые данные будут неполными. Это также означает, что эти 2 фреймворка нельзя использовать, когда компонентов страницы слишком много.

dom limit exceeded please check if there's any mistake you've made

Советы:wepyПочему в списке из 400 элементов производительность выше, чем у собственной платформы WeChat? Это связано с накладными расходами на управление пользовательскими компонентами и бизнес-сценариями (wepyСкомпилировано в шаблон, не требует накладных расходов на создание компонентов и управление), а затем нравится Weibo. Когда дело доходит до передачи данных компонентов, отражаются преимущества производительности нативной платформы WeChat. Подробнее см. в тестовых данных ниже.

Примечание 2. Лучше ли uni-app, чем родной фреймворк WeChat? Идти против неба?

На самом деле, когда на странице 200 записей (200 компонентов),taroДанные о производительности также лучше, чем у родной платформы WeChat.

Нативная структура WeChat отнимает много времени в основном вsetDataПри вызове, если разработчик не проводит оптимизацию отдельно, каждый раз будет передаваться большой объем данных;uni-app,taroзвонятsetDataсделать это автоматически передdiffВычислить, каждый раз передавая только измененные данные.

Например, текущая страница содержит фрагменты данных 20. Когда срабатывает подтягивающая загрузка, вновь загружаются фрагменты данных 20. В это время, когда собственный фреймворк проходит следующий тест кода,setDataбудет передано 40 единиц данных

data: {
    listData: []
},
onReachBottom() { //上拉加载
    let listData = this.data.listData;
    listData.push(...Api.getNews());//新增数据
    this.setData({
        listData
    }) //全量数据,发送数据到视图层
}

Используя нативный фреймворк WeChat, разработчики могут полностью оптимизировать и упростить передачу данных самостоятельно, например, модификация выглядит следующим образом:

data: {
    listData: []
},
onReachBottom() { //上拉加载
    // 通过长度获取下一次渲染的索引
    let index = this.data.listData.length;
    let newData = {}; //新变更数据
    Api.getNews().forEach((item) => {
        newData['listData[' + (index++) + ']'] = item //赋值,索引递增
    }) 
    this.setData(newData) //增量数据,发送数据到视图层
}

После вышеуказанной оптимизации и модификации, а также повторного тестирования, данные о производительности собственной платформы WeChat выглядят следующим образом:

количество компонентов Собственный фреймворк WeChat (до оптимизации) Собственный фреймворк WeChat (после оптимизации) uni-app taro
200 770 572 641 752
400 876 688 741 974
600 1111 855 910 1250
800 1406 1055 1113 1547
1000 1690 1260 1321 1878

Из результатов тестирования видно, что после ручной оптимизации разработчиками нативный фреймворк WeChat может добиться лучшей производительности, ноuni-app,taroПо сравнению с родом WeChat, разрыв производительности не большой.

Этот результат аналогичен веб-разработке, которая также включает нативную разработку js, vue и фреймворки для реагирования. Если не проводить специальную оптимизацию, производительность веб-страниц, написанных на нативном js, зачастую не так хороша, как у фреймворков vue и react.

именно потому, чтоVue,reactФреймворк отличный, производительность хорошая, опыт разработки хороший, поэтому использование нативной разработки js постепенно сокращается.

Сложный длинный список загрузки следующей страницы вывод оценки:微信原生开发手工优化,uni-app>微信原生开发未手工优化,taro > chameleon > wepy > mpvue

2.2 Скорость отклика подобных компонентов

Для компонента в длинном списке, такого как похожий компонент, могут ли состояния «не нравится» и «нравится» изменяться во времени при нажатии? является оценочной точкой этого теста.

Метод испытания:

  • Выберите микроблог и нажмите кнопку «Нравится», чтобы переключить статус «Нравится» (понравилось выделено, не понравилось серым),
  • Нравится кнопкаonclickФункция начинает считать в начале,setDataФункция обратного вызова запускает и заканчивает отсчет времени;

Проведите несколько тестов на Redmi 6 Pro и найдите среднее, результаты следующие (таблица длинная, для просмотра нужно листать влево-вправо):

Количество списков Нативный WeChat wepy mpvue taro uni-app chameleon
200 91 279 666 92 93 101
400 111 501 1507 125 107 145
600 144 - - 152 148 178
800 176 - - 214 181 236
1000 220 - - 229 234 272

Примечание. То есть, когда количество списков равно 400, требуется 111 миллисекунд, чтобы кнопка «Нравится» изменилась от щелчка до состояния приложения, изначально разработанного WeChat.

Описание данных результатов теста:

  • Причина, по которой тестовые данные wepy/mpvue неполны, та же, что и выше: когда компонентов много, страница перестает отображаться.
  • Фреймворк для разработки компонентов на основе пользовательских компонентов WeChat (uni-app/taro/chameleon), производительность передачи данных компонента близка к родному фреймворку WeChat, намного выше, чем на основеtemplateПроизводительность фреймворка (wepy/mpvue) для разработки компонентов

Оценка производительности обновления данных компонента:微信原生开发,uni-app,taro > chameleon > wepy > mpvue

Подводя итог, этот тест производительности провел 2 теста, загрузку длинного списка и обновление состояния компонента, синтезируя 2 эксперимента, выводы следующие:

微信原生开发手工优化,uni-app>微信原生开发未手工优化,taro > chameleon >> wepy > mpvue

3. Порог обучения

Поддержка синтаксиса DSL

Основные кросс-энд фреймворки в основном следуют синтаксису React и Vue (похожему на Vue), и их основная цель — повторно использовать существующие технологические стеки инженеров и снизить затраты на обучение. В настоящее время поддержка кросс-энд фреймворком для грамматики исходного фреймворка (React/Vue) является важной мерой.Если поддержка низка, а грамматика исходного фреймворка сильно отличается, разработчик равносилен изучению грамматики. новые рамки, стоимость слишком высока.

В ходе фактической разработки выяснилось, что каждая мультитерминальная структура не полностью реализовала все грамматики vue и react в сети:taroдляJSXПоддержка синтаксиса относительно полная, и планы на будущие версии описаны в его документации.

Дополнительная поддержка синтаксиса JSX, единственный синтаксис, который ограничивает производительность после версии 1.3, — это использование карты для создания компонентов цикла.

mpvue,uni-appкаркас, основанный наVue.jsядро, модифицируяVue.jsизruntimeа такжеcompiler, реализует операцию на стороне апплета и поддерживает большую часть синтаксиса Vue;uni-appСкомпилировал в WeChat и использовал егоmpvue, но позже переписал фреймворк для поддержки большего количества синтаксиса vue, такого какfilter,сложныйJavaScriptвыражения и др.;

wepy,chameleonобе类Vueреализация поддерживает толькоVueчасть грамматики, и их правила нужно изучать отдельно при разработке;

Оценка поддержки синтаксиса DSL:taro,uni-app > mpvue > wepy,chameleon

Полнота учебных материалов

Полнота официальной документации, поиск проблем и демонстрационные примеры:

  • wepy: В документации всего 2 страницы и искать не надо. Поддерживается только WeChat, поэтому API компонентов и другие документы можно просматривать непосредственно в документах WeChat. Демонстрационный образец не предоставляется.смотрите подробности
  • mpvue: Документов немного, но их концепция несложна, и они не поддерживают H5 и App, поэтому API-интерфейсы компонентов и другие документы просматриваются непосредственно в документах WeChat, и сложность обучения невелика. Эффект поиска проблемы средний. Демонстрационный образец не предоставляется.смотрите подробности
  • Taro: Основная документация API завершается, существует мало конкретных ресурсов проблем с использованием, и эффект поиска проблемы в среднем. Образец демонстрации содержит только основные функции, а только конец WECHAT.смотрите подробности
  • uni-app: Базовые документы и различные темы использования богаты содержанием, эффект поиска проблем хорош, демо-функция примера завершена, и она выпущена для 7-го конца онлайн.смотрите подробности
  • хамелеон: Базовая документация по API завершена, ресурсов по конкретным проблемам немного, а эффект поиска проблемы средний. Демо-образец содержит только базовые функции, и выпущена только часть WeChat.смотрите подробности

Преподавательские курсы:

Оценка полноты учебных материалов: uni-app > mpvue, таро > хамелеон > вепи

Техническая поддержка и активность сообщества

Разработка неизбежно столкнется с проблемами, а официальная техническая поддержка и активность сообщества очень важны.

Во время разработки этой оценочной демонстрации наши одноклассники (освоившие как vue, так и react) при изучении и исследовании различных многотерминальных фреймворков действительно почувствовали порог обучения, вызванный различиями в грамматике, учебных материалах и сообществах, и выплюнули много канавок.

Комплексная оценка, этот оценочный вывод:uni-app > taro > mpvue > wepy > chameleon

Советы: эта оценка игнорирует пороги обучения самих фреймворков React и Vue.

4. Инструменты и окружающая среда

инструмент

Поддерживаются все многотерминальные фреймворкиcliрежим, который может быть разработан в основных интерфейсных инструментах. Каждый фреймворк в основном имеет библиотеку синтаксических подсказок d.ts. из-заmpvue,uni-app,taroпрямая поддержкаvue,reactБогатый синтаксис, поддержка цепочки инструментов IDE, окраска, проверка, форматирование идеально,chameleonПлагины рекомендуются для некоторых редакторов,wepyЕсть некоторые поддерживаемые сторонними плагинами vscode.

Размер атрибута инструмента, рамка, которая значительно выше, чемuni-app, его производственная компания также является производственной компанией HBuilder,DCloud.io. Серия HBuilder/HBuilderX — это отечественный инструмент разработки с 3 миллионами пользователей-разработчиков. HBuilderX этоuni-appБыло сделано много оптимизаций, поэтомуuni-appЭффективность развития, простые в использовании непрочие рамки. Конечно, для разработчиков, которые не привыкли к hbuilderx,uni-appЭто преимущество не может быть реализовано.

окружающая экология

Низкоуровневый фреймворк, чьи периферийные устройства очень важны, такие как библиотека пользовательского интерфейса, библиотека js и шаблон проекта.

  • wepy: Он существует уже давно, и существует множество проектов с открытым исходным кодом, так что у него есть определенные преимущества.
  • mpvue: Время выпуска также более раннее, и есть много исторических накоплений.
  • Taro: Taro UI официально предоставляется, и на github есть несколько проектов с открытым исходным кодом.
  • уни-приложение: обеспечиваетРынок плагинов, богатая библиотека пользовательского интерфейса и окружающие шаблоны
  • хамелеон: Окружающая экология еще не сформировалась.

Примечательно,uni-appа такжеmpvueЭкосистема подключаемых модулей совместима, и все они являются подключаемыми модулями Vue. Поэтому обе стороны также совместно провели конкурс плагинов. Окружающее богатство этой совместной экологии является самым богатым среди существующих структур.

Кстати, сделайте рекламу, и приглашайте к участию студентов, у которых есть силы.конкурс разработки плагинов uni-app/mpvue, чтобы получить щедрые призы, такие как iPhone Xs Max.

Таким образом, инструменты и связанные с ними выводы экологической оценки заключаются в следующем:uni-app,mpvue > wepy > taro > chameleon

Другие общие показатели оценки

звезда гитхаба:

wepy mpvue taro uni-app chameleon
18436 18085 20482 10035 5619

Сравнение номеров звезд github:taro > wepy > mpvue > uni-app > chameleon

Tips:

  • Время сбора звезд: 25.07.2019 18:18
  • Количество звезд связано со временем выпуска продукта, а также с привычками пользователей;uni-appКроме того, общение и взаимодействие других фреймворков — это в основном задачи github,uni-appразработчиков в целомuni-appизСообщество вопросов и ответовВ обмен на отзывы страница github имеет низкое количество посещений.

Индекс Байду

Индекс Baidu представляет объем поиска разработчика и количество веб-страниц, содержащих ключевые слова. Ниже представлен индекс Baidu для каждой кросс-энд фреймворка за последние 7 дней (24.03.2019 ~ 30.03.2019):

Tips:

  • wepyЕсли оно не включено в индекс Baidu, это означает, что объема поиска и количества веб-страниц, содержащих ключевое слово, недостаточно.
  • taroа такжеchameleonИмя берется из существующего имени, а индекс, который фактически относится к среде разработки, должен быть ниже.

кейс

Просто посмотрите на кейсы, опубликованные в апплете WeChat, всестороннее сравнение количества и качества, wepy > mpvue > taro, uni-app > хамелеон

Если делать многопортовые кейсы, комплексное сравнение, uni-app > taro > mpvue > wepy > хамелеон

Кромеuni-appКроме того, производители других кросс-энд фреймворков сами являются первоклассными разработчиками, а их внутренние проекты будут использовать эти фреймворки и прошли реальную боевую проверку. Но в то же время немногие другие крупные разработчики используют такие фреймворки.

Есть проблемы с лицом и проблемы с совместимостью. Многие разработчики делают фреймворки, которые могут удовлетворить их собственные бизнес-потребности, но если они хотят соответствовать всем разработчикам после открытия для внешнего мира, им все равно нужно вложить много работы для улучшения своих продуктов.Многие разработчики не имеют здесь своего основного бизнеса и не делайте этого.

Вот почему многие проекты с открытым исходным кодом называются проектами KPI.

Объективно говоря, вогнуто-выпуклая лаборатория вложила столько сил в полировкуtaro,Позволятьuni-appКоманда тоже была удивлена ​​и восхищена.chameleonКоманда много вложила на начальном этапе, но время релиза было еще коротким, и было бы замечательно, если бы они смогли вложиться надолго.uni-appСама команда — это сервис профессиональных разработчиков, кейсов много, но в основном это предприниматели.

Можно сказать, что весь рынок многотерминальных фреймворков все еще находится в зачаточном состоянии и требует совместных усилий всех авторов фреймворков, чтобы его приняло больше разработчиков.

Другие дополнительные инструкции

Дополнительные инструкции на стороне приложения

В настоящее время естьtaro,uni-app,chameleonТри платформы поддерживают сторону приложения. Но со стороны приложений большинство из них являются сторонними продуктами, такими какtaroиспользоватьexpo(один на основеreact nativeпакетная библиотека),chameleonиспользоватьweex.

Независимо от тогоreact nativeещеweex, его архитектура полностью отличается от архитектуры апплета, а макет и возможности API сильно отличаются, поэтому этот тип продукта имеет плохую совместимость между приложениями.

uni-appНа стороне приложения встроен полный движок апплета, а необязательныйweexДвижок предназначен для разработчиков с более высокими требованиями к производительности. Это тожеuni-appПричина, по которой код апплета WeChat может нормально работать на стороне приложения.

В настоящее время во всей отрасли нет механизма апплета с полностью открытым исходным кодом (исходный код механизма апплета WeChat, Baidu, Alipay и Toutiao не является открытым исходным кодом).uni-appЯдро апплета не является полностью открытым исходным кодом, но уровень возможностей имеет открытый исходный код, а центральный элемент управления не является открытым исходным кодом.

Поэтому различные многотерминальные фреймворки могут иметь недостатки на стороне приложений, и разработчикам следует обращать на них внимание при их использовании.

На самом деле App Engine — это не интерфейсная область, а еще одна арена в нативной области. следовать заuni-appпридумаю другойcordova,react native,weex,flutterкритика.

Конвертировать и смешивать

taroОбеспечивает преобразование собственного апплета вtaroКонвертер проекта также поддерживает встраивание некоторых страниц в нативный апплетtaroписьменная страница, котораяtaroфункции, которые не предоставляют другие кросс-энд фреймворки. Это очень помогает снизить порог входа.

Эпилог

Что истинно и объективно, так это всегда эксперименты и данные, а не выводы. Разработчики с разными потребностями могут сделать собственные выводы на основе приведенных выше экспериментальных данных.

Но в качестве полного обзора мы также должны предоставить резюме, хотя оно может добавить к нашим субъективным ощущениям:

Если вы хотите развивать многосторонность, повышать эффективность и не хотите наступать на слишком много ям,uni-appотносительно более полным.

Если вы разрабатываете только мини-программы WeChat и не делаете мультиэнд, то используйтеuni-app, нативная разработка WeChat,taroэто лучший выбор.

  • Если вы используете нативную разработку WeChat, вам нужно обратить внимание на ручное написание оптимизированного кода для управленияsetdata
  • Что, если выreactДепартамент, затем используйтеtaro
  • еслиvueДепартамент, затем используйтеuni-app,uni-appБольше преимуществ в производительности, окружающей среде и эффективности разработки

Если вы в основном за WeChat и H5, тоuni-appа такжеtaroВсе будет хорошо. Вы можете выбрать в соответствии со стеком технологий, с которым вы знакомы.

Если вам в основном нужно пересечь сторону приложения,uni-appСовместимость лучше, а различия на стороне приложений других фреймворков слишком велики. Если вас интересует только приложение, а не мини-программы и H5, обратите внимание на нашу дополнительную оценку:uni-appа такжеcordova,react native,flutterуглубленное сравнение.

Если вы в основном для различных небольших программ и не нуждаетесь в сложных компонентах, то помимоuni-appа такжеtaro,mpvueТоже хороший выбор.mpvueПосле выпуска версии 2.0 индекс поиска значительно вырос, и есть надежда, что он продолжит обновляться и возвестит второе процветание.

chameleonВскоре после его выпуска было предоставлено несколько компонентов и API, но его планы на будущее более интересны и заслуживают внимания.

После написания этого отзыва я немного напуган.

С одной стороны, этот отзыв не очень щадящий, и людей легко обидеть. Но мы верим, что такого рода оценка пробудит боевой дух у всех практиков кросс-энд фреймворков и позволит всем вкладывать больше средств в улучшение продукта, что очень важно для всей индустрии и фронтенд-разработчиков.

С другой стороны, читатели могут подумать, что нынешняяuni-appЭто прекрасно, на самом деле, мы знаемuni-appЕще многое предстоит улучшить.uni-appКоманда также продолжит вкладывать средства в усилия, направленные на благо китайских разработчиков интерфейса!

Если читатели считают, что какая-либо оценка в этой статье искажена, сообщите об этом здесь.issues.