<commit_before>title: Taro Next 发布预览版：同时支持 React / Vue / Nerv
subtitle: 自 Taro 2.0 起，我们将会启动对整个 Taro 系统架构的革新，这次革新我们将其称之为 Taro Next。
cover: https://img14.360buyimg.com/ling/jfs/t1/103557/3/12087/1051626/5e44b357E4cab8765/d8c821c4a3e1060d.png
categories: Web开发
tags:
  - 小程序
  - Taro
author:
  nick: yuche
  github_name: yuche
date: 2020-02-013 13:50:00
---

自 Taro 2.0 起，我们将会启动对整个 Taro 系统架构的革新，这次革新我们将其称之为 Taro Next。Taro Next 革新完成之后，Taro 本身的拓展性、稳定性、可维护性都会大幅提高，相应地，使用 Taro 的开发者也会获得更好的开发体验，降低更多开发成本和学习成本。

我们目前已经完成了**编译系统和小程序端的重构**，通过 `npm i -g @tarojs/cli@next` 安装 Taro CLI 预览（alpha）版之后，使用 `taro init` 创建新项目即可体验 Taro Next 的新特性：

## 同时支持 React/Vue/Nerv 三种框架

在旧版本的 Taro，我们以微信小程序的开发规范为基准，使用 React/JSX 的方式来进行开发。而在 Taro Next，我们把这一思路量化为一个编程模型：

设微信小程序生命周期为一个 `interface`，不同的框架实例的生命周期虽然不尽相同，但我们可以根据框架生命周期分别新建一个 `class` 去 `implements` 小程序生命周期的 `interface`。相应地，小程序的组件/API/路由规范可以使用同样的思路和模型让不同框架的代码，运行在不同的端上：

![taro](http://storage.jd.com/taro-source/taro-docs/WechatIMG1393.png)

## 不限制语言、语法

由于 Taro Next 的架构出现了变化，表面上来看 Taro 从一个编译型框架变成了一个运行时框架。但究其内核是整体的设计思路出现了变化：从前是「模拟（`mock`）」，现在是「实现（`implements`）」。在 Taro Next 我们实现了 React 在小程序中的完整支持，因此这类曾经的 Taro 无法运行的代码在 Taro Next 中完全没有压力：
<commit_msg>fix: 更改发布时间<commit_after>title: Taro Next 发布预览版：同时支持 React / Vue / Nerv
subtitle: 自 Taro 2.0 起，我们将会启动对整个 Taro 系统架构的革新，这次革新我们将其称之为 Taro Next。
cover: https://img14.360buyimg.com/ling/jfs/t1/103557/3/12087/1051626/5e44b357E4cab8765/d8c821c4a3e1060d.png
categories: Web开发
tags:
  - 小程序
  - Taro
author:
  nick: yuche
  github_name: yuche
date: 2020-02-03 13:50:00
---

自 Taro 2.0 起，我们将会启动对整个 Taro 系统架构的革新，这次革新我们将其称之为 Taro Next。Taro Next 革新完成之后，Taro 本身的拓展性、稳定性、可维护性都会大幅提高，相应地，使用 Taro 的开发者也会获得更好的开发体验，降低更多开发成本和学习成本。

我们目前已经完成了**编译系统和小程序端的重构**，通过 `npm i -g @tarojs/cli@next` 安装 Taro CLI 预览（alpha）版之后，使用 `taro init` 创建新项目即可体验 Taro Next 的新特性：

## 同时支持 React/Vue/Nerv 三种框架

在旧版本的 Taro，我们以微信小程序的开发规范为基准，使用 React/JSX 的方式来进行开发。而在 Taro Next，我们把这一思路量化为一个编程模型：

设微信小程序生命周期为一个 `interface`，不同的框架实例的生命周期虽然不尽相同，但我们可以根据框架生命周期分别新建一个 `class` 去 `implements` 小程序生命周期的 `interface`。相应地，小程序的组件/API/路由规范可以使用同样的思路和模型让不同框架的代码，运行在不同的端上：

![taro](http://storage.jd.com/taro-source/taro-docs/WechatIMG1393.png)

## 不限制语言、语法

由于 Taro Next 的架构出现了变化，表面上来看 Taro 从一个编译型框架变成了一个运行时框架。但究其内核是整体的设计思路出现了变化：从前是「模拟（`mock`）」，现在是「实现（`implements`）」。在 Taro Next 我们实现了 React 在小程序中的完整支持，因此这类曾经的 Taro 无法运行的代码在 Taro Next 中完全没有压力：

{'fraction_non_alphanumeric': 0.11507430997876858, 'fraction_numerical': 0.058174097664543525, 'mean_word_length': 6.408805031446541, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6191526', 'n_tokens_mistral': 1716, 'n_tokens_neox': 1781, 'n_words': 187}