We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WeixinJSBridge
JS SDK
微信分享
调用原生相册
传统的混合APP 传统的混合APP,主要依赖于端上内置的JS运行容器,在其上运行混合APP代码,其本质仍然属于传统的JavaScript运行机制,也就是单线程运行的,并且JS引擎线程会跟GUI渲染线程互斥,导致执行长时间的JS操作的时候,页面会失去响应,动画掉帧等,影响用户体验,这也是混合APP最大的一个弊端
JS运行容器
混合APP
JavaScript
JS引擎线程
GUI渲染线程
长时间的JS
小程序的底层架构 小程序的实现逻辑是双线程架构
小程序的运行环境
视图层和逻辑层通过系统层的JSBridage进行通信,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层把触发的事件通知到逻辑层进行业务处理。这就解决了混合APP最大的一个问题
JSBridage
小程序与传统编写的区别
HTML+CSS+JS
WXML+WXSS+JS
WXML
WXSS
依赖于微信平台的Native组件 由于依赖于微信平台,所以在小程序里面,能使用微信提供的原生组件,也就是Native层绘制的组件,Native层绘制的组件会在WebView层之上
WebView
所以 微信小程序的本质是由WebView与Native两者组合渲染完成的
Native
小程序的优势
小程序的问题
虽然小程序为业务提供了一种新的展示形式,但对于开发者来说,开发体验则显得并不那么友好。在前端工程化深入人心的今天,小程序那落后的三件套编写模式,大大的浪费时间。
列表渲染
点击组件响应速度
社区对比
Taro 采用了 React 语法来作为自己的语法标准,配合前端工程化的思想,为小程序开发打造了更加优雅的开发体验。
我们目前这边所使用的前端框架也就是 React,基本只需要很少的学习,就能无缝切换到小程序的开发当中去。
React
taro诞生的本质思想跟编译原理有点类似,就是通过编译的方式,将taro代码,通过一系列的操作,转换成目标代码
Taro的优势
但是这对于多端开发是远远不够的,因为每一个平台都有自己的特性,比如小程序跟WEB
taro运行机制
编译转换核心 Taro 的核心部分就是将代码编译成其他端(H5、小程序、React Native 等)代码。一般来说,将一种结构化语言的代码编译成另一种类似的结构化语言的代码包括以下几个步骤:
具体的操作 假设我们需要更改 foo的名字 为 bar
foo
bar
jsonStr.replace(/(?<=")foo(?="\s*:)/i, 'bar')
这就是具体的操作了,实现parse的部分是整个框架的核心,肯定不可能这么简单了,但是自己去实现一个parse也是工作量非常巨大的,还好业界有非常著名的 babel
parse
babel
Babylon(@babel/parser)
AST
import * as babylon from "babylon"; const code = `n * n`; babylon.parse(code);
转换成这样
然后通过 Babel-traverse (@babel/traverse) 可以遍历生成的树,实现添加,删除,替换的操作。
taro运行时
Taro 组件的 setState 行为最终会对应到小程序的 setData。Taro 引入了如 nextTick ,编译时识别模板中用到的数据,在 setData 前进行数据差异比较等方式来提高 setState 的性能。
taro的不足
这里只简单介绍了一下小程序的历史以及taro主要的架构,在开发过程中依然有无数的坑在等着你,这个只有等具体实践的时候,再逐步积累了。
参考文章: 微信小程序架构,工作原理解析 Taro多端开发原理与实战 小程序开发框架对比
The text was updated successfully, but these errors were encountered:
No branches or pull requests
小程序的前世今生
小程序的前世
WeixinJSBridge
的JS SDK
。微信分享
,调用原生相册
之类的原生功能小程序的诞生
传统的混合APP
传统的混合APP,主要依赖于端上内置的
JS运行容器
,在其上运行混合APP
代码,其本质仍然属于传统的JavaScript
运行机制,也就是单线程运行的,并且JS引擎线程
会跟GUI渲染线程
互斥,导致执行长时间的JS
操作的时候,页面会失去响应,动画掉帧等,影响用户体验,这也是混合APP
最大的一个弊端小程序的底层架构
小程序的实现逻辑是双线程架构
小程序的运行环境
视图层和逻辑层通过系统层的
JSBridage
进行通信,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层把触发的事件通知到逻辑层进行业务处理。这就解决了混合APP最大的一个问题小程序与传统编写的区别
HTML+CSS+JS
的方式WXML+WXSS+JS
,然后偷偷摸摸的编译一下,本质还是HTML+CSS+JS
WXML
WXSS
依赖于微信平台的Native组件
由于依赖于微信平台,所以在小程序里面,能使用微信提供的原生组件,也就是Native层绘制的组件,Native层绘制的组件会在
WebView
层之上所以 微信小程序的本质是由
WebView
与Native
两者组合渲染完成的小程序的优势
小程序的问题
为什么选择使用框架taro
小程序编写方面的不足
虽然小程序为业务提供了一种新的展示形式,但对于开发者来说,开发体验则显得并不那么友好。在前端工程化深入人心的今天,小程序那落后的三件套编写模式,大大的浪费时间。
小程序框架对比
列表渲染
点击组件响应速度
社区对比
taro的特点
Taro 采用了 React 语法来作为自己的语法标准,配合前端工程化的思想,为小程序开发打造了更加优雅的开发体验。
我们目前这边所使用的前端框架也就是
React
,基本只需要很少的学习,就能无缝切换到小程序的开发当中去。Taro原理以及机制
taro诞生的本质思想跟编译原理有点类似,就是通过编译的方式,将taro代码,通过一系列的操作,转换成目标代码
Taro的优势
但是这对于多端开发是远远不够的,因为每一个平台都有自己的特性,比如小程序跟WEB
taro运行机制
编译转换核心
Taro 的核心部分就是将代码编译成其他端(H5、小程序、React Native 等)代码。一般来说,将一种结构化语言的代码编译成另一种类似的结构化语言的代码包括以下几个步骤:
具体的操作
假设我们需要更改
foo
的名字 为bar
这就是具体的操作了,实现
parse
的部分是整个框架的核心,肯定不可能这么简单了,但是自己去实现一个parse
也是工作量非常巨大的,还好业界有非常著名的babel
Babylon(@babel/parser)
将代码转换成AST
转换成这样
然后通过 Babel-traverse (@babel/traverse) 可以遍历生成的树,实现添加,删除,替换的操作。
taro运行时
Taro 组件的 setState 行为最终会对应到小程序的 setData。Taro 引入了如 nextTick ,编译时识别模板中用到的数据,在 setData 前进行数据差异比较等方式来提高 setState 的性能。
taro的不足
React
的一些新特性,某些方法的使用也遭到了阉割小结
这里只简单介绍了一下小程序的历史以及taro主要的架构,在开发过程中依然有无数的坑在等着你,这个只有等具体实践的时候,再逐步积累了。
参考文章:
微信小程序架构,工作原理解析
Taro多端开发原理与实战
小程序开发框架对比
The text was updated successfully, but these errors were encountered: