Предисловие: следующая статья была выпущена в апреле 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. Что такое кросс-энд поддержка?
Разработать один раз, запустить везде — мечта каждого программиста. Но реальность часто становится развитием один раз и совершением ошибок везде.
Действительно ли оцениваемые фреймворки разрабатывались в одно время и выпускались на разных концах, как рекламируется?
Мы будем вышеИмитация приложения 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.