Предварительный просмотр релиза Taro Next: одновременная поддержка React / Vue / Nerv

Апплет WeChat Taro
Предварительный просмотр релиза Taro Next: одновременная поддержка React / Vue / Nerv

Начиная с 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

Неограниченный язык и грамматика

Из-за изменений в архитектуре 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служба поддержки.这对于开发体验是一个巨大的提升:

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 и время от времени публикуйте статьи:

image