京东凹凸实验室开源Taro框架:一套代码适配多端开发解决方案

2025-04-15
来源:网络整理

前言

还记得神经吗? JD凸实验室今年开设了许多项目。今天早上阅读文章由 @大全机生机共享。

文字从这里开始〜

什么是芋头?

塔罗是-实验室创建的多端统一开发框架,遵循语法规范。

如今,市场上有许多类型的上端。各种目的,例如Web,App End(),微信小计划等。当需要同时在不同目的执行业务需求时,为不同目的编写多组代码的成本显然很高。目前,仅编写一组代码来适应多个目的的能力是非常必要的。

使用塔罗,我们只能编写一组代码,然后将源代码编译到可以在不同端的代码中(微型微型程序,H5,App End等)通过Taro的编译工具来运行。同时,芋头还提供了开箱即用的语法检测和自动完成功能,从而有效提高了发展经验和发展效率。

塔罗可以提供什么?写一次,多次运行

由于它是一个多端解决方案,因此芋头最重要的能力当然是编写一组可以由多个目的运行的代码。目前,塔罗(Taro)支持一组代码,以同时生成H5和小程序。 App End()结束也将得到支持,并且还将支持快速应用程序之类的结束。

同时,芋头也已在生产环境中使用,目前支持开发30,000线Code Mini计划和一些JD Mini计划,并且还将支持将来更多JD Core Mini计划。

现代前端发展过程

与微信带来的迷你计划框架不同,芋头积极采用社区现有的现代发展过程,包括但不限于:

对于微信小计划的汇编过程,我们从灵感中学到了一系列的包装机制来不断通过AST,因此代码分析的速度已得到极大的提高。 2015年的15英寸元人民币仅需15秒即可编译数百个组件。

完全一致的API和组件系统

在塔罗(Taro),您不必区分什么是应用程序组件,什么是页面组件以及哪些是Mini程序之类的组件。塔罗是所有组成部分,其生命周期完全相同。可以说,一旦您掌握了它,您几乎掌握了塔罗。而且学习资源几乎是很多,因此无需担心无法学习。

塔罗(Taro)也是如此,使用声明的JSX语法。与字符串的模板语法相比,在满足精致和复杂的需求时,JSX更方便。

// 一个典型的 Taro 组件
import Taro, { Component } from'@tarojs/taro'
import { View, Button } from'@tarojs/components'
exportdefaultclassHomeextendsComponent
{
constructor
(props) {
super(props)
this.state = {
title
: '首页',
list
: [1, 2, 3]    }  }  componentWillMount () {}  componentDidMount () {}  componentWillUpdate (nextProps, nextState) {}  componentDidUpdate (prevProps, prevState) {}  shouldComponentUpdate (nextProps, nextState) {
returntrue  
}
 add
= (e) => {
// dosth
 
}
 render
() {
const { list, title } = this.state
return (
<ViewclassName='index'>
<ViewclassName='title'>{title}View>
<ViewclassName='content'>          {list.map(item => {            return (
<ViewclassName='item'>{item}View>            )          })}
<ButtonclassName='add'onClick={this.add}>添加Button>
View>
View>    )  }
}

良好的发展效率和经验

鉴于芋头的语法完全相同,编辑器/IDE几乎可以支持芋头。默认情况下,现代编辑支持JSX。如果没有,找到插件也很容易。但是毕竟,我们确实做塔罗来提高发展效率和发展经验,而真正使用芋头的人是我们自己或坐在我们旁边的同事。因此,在此基础上,我们进一步增强了塔罗的发展经验。

自定义规则

我们之前提到过,当您学习它时,您实际上可以知道塔罗。重要的原因之一是,我们已经编写了塔罗不支持的语法和功能的规则:开发人员只编写代码,并编写不支持它的语法/功能编辑器,它将报告错误,并提供错误消息和文档地址描述。

芋头类型的安全性和运行时检测

JSX的本质是语法增强,因此在编译期间无法发现诸如未发现组件之类的语法错误。开发人员还可以使用或流动进一步提高其代码的可靠性,或者使用它来进一步确保其代码在运行时的鲁棒性。

.GIF的有效自动完成和ES6+语法

所有塔罗API(包括微信小程序的功能接口等)都具有智能的提醒和自动完成,包括接口参数和返回值。

芋头自动完成芋头的设计思想

我们最初的目的是制定一个可以适应多个目的的解决方案。结合业务场景,技术选择和前端历史发展过程,我们的解决方案必须满足以下要求:

同时满足这些需求并不容易。经过足够的研究和思考,我们发现只有系统才能满足我们的需求。对于微信小程序,没有办法使用它们来开发它们 - 直到我们获得灵感:

从较高的抽象角度(语法树)中,每个人都编写了相同的代码,在出色而严格的规范限制下。

换句话说,对于不开放和开源的微信小程序,我们可以首先将代码分析为抽象的句法树,生成基于这棵树的小程序支持的模板代码,然后制作一个小程序运行时框架,以处理与框架兼容的事件和生命周期,然后在运行时框架在端子上运行业务代码。

对于已经支持的目的,例如Web甚至将来的VR,我们只需要包装组件库并提供一些样式支持即可。鉴于Mini计划的流行和我们团队本身的业务重点,组件库的API基于Mini程序,而其他目的的组件库的API将与Mini计划的组件一致。

塔罗原则和技术选择和权衡

在我们以前的社区中,有许多出色的框架可以探索用小程序作为核心的多端改编。我们比较了每个开发框架的主要功能和功能,并将其制成图表。您可以选择并权衡团队的技术堆栈,技术需求以及框架特征和特征。

塔罗对比

经过几个月的发展,塔罗(Taro)从第一个项目发展到一个大型项目,其中包括16个包裹和十几名学生参加。同时,芋头还支持生产环境中几个复杂的在线项目的开发,并将在将来支持更多的JD业务。

塔罗(Taro)的技术解决方案和实施也源于社区,我们也希望为技术界的发展和发展贡献自己的实力。遵循JD Aotu实验室的开源,开放性和共享的长期传统,我们今天开放了所有Taro Code,为开发人员提供了一套完整的技术解决方案,以快速开发多端项目。将来,我们将继续扩大芋头的现有能力,支持更多的最终功能,继续提高开发人员的体验,提高开发人员的效率并帮助更多的开发人员。同时,我们还将从社区吸取营养,以使芋头更强壮。

官方网站:

关于这篇文章

分享