Начиная с Taro 2.0, мы начинаем инновацию всей архитектуры системы Taro, которую мы называем Taro Next. После того, как инновация Taro Next будет завершена, масштабируемость, стабильность и ремонтопригодность самого Taro будут значительно улучшены.Соответственно, разработчики, использующие Taro, также получат лучший опыт разработки и сократят дополнительные затраты на разработку и обучение.
в настоящее время мы закончилиРефакторинг системы сборки и апплета,пройти черезnpm i -g @tarojs/cli@next
После установки предварительной (альфа) версии Taro CLI используйтеtaro init
Создайте новый проект, чтобы испытать новые возможности Taro Next:
Одновременно поддерживает фреймворки React/Vue/Nerv.
В старой версии Taro мы использовали подход React/JSX для разработки на основе спецификаций разработки мини-программ WeChat. И в Taro Next мы количественно выражаем эту идею в модели программирования:
Пусть жизненный цикл апплета WeChat будетinterface
, хотя жизненный цикл разных экземпляров фреймворка отличается, мы можем создать новый в соответствии с жизненным циклом фреймворкаclass
идтиimplements
жизненный цикл апплетаinterface
. Соответственно, спецификация компонента/API/маршрутизации апплета может использовать ту же идею и модель, чтобы позволить коду разных фреймворков работать на разных сторонах:
Неограниченный язык и грамматика
Из-за изменений в архитектуре Taro Next, Taro превратился из скомпилированной среды в среду выполнения на поверхности. Но суть в том, что общая дизайнерская идея изменилась: раньше это была «симуляция (mock
)», теперь «реализовано (implements
)". В Taro Next мы реализовали полную поддержку React в апплетах, поэтому такой код, который Taro не мог запустить в Taro Next, совершенно не требует стресса:
import { View } from '@tarojs/components'
function Page (props) {
const view = React.createElement(View, null, props.text)
return [view, React.Children.only(prosps.children)]
}
В старой версии Taro мы обеспечивали первоклассную поддержку JavaScript и TypeScript, а в Taro Next мы пошли еще дальше: в принципе, любой язык, который наконец можно скомпилировать в JavaScript, можно использовать для создания проектов Taro. пример использования CoffeeScript в Vue. Например:
// config.js
{
webpackChain (chain) {
chain.merge({
module: {
rule: {
test: /\.coffee$/,
use: [ 'coffee-loader' ]
}
}
})
}
}
<template>
<view>{{ title }}</view>
<view>{{ text }}</view>
<input v-model='text' />
</template>
<script lang="coffee">
export default
props:
title:
type: String
required: true
data: ->
text: 'text'
</script>
бежать быстрее
Производительность среды выполнения в основном делится на две части: производительность обновления и производительность инициализации.
Для повышения производительности обновления старые версии Taro будутsetState
Данные полностью различаются один раз и, наконец, возвращаются в апплет, обновляются в соответствии с путемdata
. В Taro Next работа по diff передается используемому разработчиком фреймворку (React/Nerv/Vue), а данные после diff фреймворка также будут минимизированы и обновлены по пути через Taro. Поэтому разработчики могут делать все более тонкие оптимизации производительности в соответствии с характеристиками используемого фреймворка.
Производительность инициализации — болевая точка Taro Next. Исходные данные собственного апплета или скомпилированного фреймворка можно напрямую использовать для рендеринга, но Taro Next еще раз преобразует данные рендеринга фреймворка в данные рендеринга апплета во время инициализации.setData
накладные расходы.
Чтобы решить эту проблему, Taro вдохновлен рендерингом на стороне сервера, а интерфейс командной строки Taro напрямую отображает состояние инициализации страницы как wxml без сохранения состояния и выполняет процесс рендеринга до запуска фреймворка и бизнес-логики. Мы называем эту технологию Prerender, и начальная скорость рендеринга страницы после Prerender обычно такая же или даже выше, чем у нативного апплета.
Более высокая скорость сборки и поддержка исходных карт
В качестве скомпилированного фреймворка старые версии Taro выполняли множество операций AST, что значительно замедляло компиляцию Taro CLI. В Taro Next AST бизнес-кода любого разработчика не будет подвергаться манипуляциям, поэтому скорость компиляции была значительно улучшена.
Поскольку AST отменяет операцию, Taro Next также легко достигаетсяsource-map
служба поддержки.这对于开发体验是一个巨大的提升:
Не забывайте о первоначальном намерении
При достижении вышеуказанных функций мы не потеряли функции, которые уже поддерживались:
- Поддержка апплета WeChat, смарт-апплета Baidu, апплета Alipay, апплета QQ, апплета ByteDance
- Используйте сторонние компоненты/плагины собственного апплета
- Многотерминальная условная компиляция
- Кросс-энд API и обработка стилей
Эти функции в основном включают в себя все аспекты разработки апплета. Хотя это предварительный просмотр, Taro Next готова к разработке программ апплета на уровне производства. Существует также множество программ апплета в команде TARO и командам брата, которые разрабатываются с использованием TARO. На стороне H5 и мобильной стороне таро дальше мы все еще интенсивно развиваемся. Когда версия Taar Next Test (Beta) выпущена, набор кодов, созданных с TARO Далее, может работать в различных апплетах, быстрых приложений, H5 и мобильных терминалах одновременно. В будущем мы также откроем возможности TARO-TARO, чтобы разработчики могли использовать любые рамки (угловые, трепетание, Svelte ...), они любят разрабатывать небольшие программы или многосекретные приложения, пока они пишут маленький количество кода доступа.
Помните о миссии
Как мы сказали, когда Таро 2.0 был выпущен:
Фестивали и декорации не лечат друг друга, а тутовые поля и синие моря нужно менять в одно мгновение.
Наступают 1920-е, и в ближайшие 10 лет многие фреймворки умрут, а многие технологии возродятся.Ничто не является постоянным, единственная константа — это изменения, и все, что мы можем сделать, — это принять изменения.
Фронтенд-технологии развиваются быстрыми темпами, а популярные технологии и фреймворки меняются из года в год. Но мы никогда не забывали об изначальном замысле и миссии разработки Таро:Сократите затраты на разработку, улучшите опыт разработки и эффективность разработки.
«Не забывайте о первоначальном намерении, помните о миссии».
Вот как команда Таро воспринимает изменения.
использованная литература
[1] Исследование и практика межплатформенной разработки небольших программ:Woohoo.info Q. талант/статья/ТМ, но...
[2] Руководство по миграции на старую версию Taro Next:taro-docs.jingdong.com/taro/next/…
[3] Prerender: taro-docs.jingdong.com/taro/next/…
[4] Тест производительности:GitHub.com/nerv JS/таро…
[5] Сравнение с другими новыми мини-программами:taro-docs.jingdong.com/taro/next/…
Добро пожаловать в блог Bump Labs:aotu.io
Или обратите внимание на официальный аккаунт AOTULabs и время от времени публикуйте статьи: