在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
(点击上方公众号,可快速关注)
现在做React转小程序,一个是taro,一个是anujs。 anujs的React小程序一开始是群的方正搞的,后来神烦IT狗接手。当我们想抄袭时,已经有一个可以运行的demo。taro那时名声很大,但实质并不如意。我研究了好久taro的源码,发现可以使用tempate元素避开小程序的自定义组件不能在构造器传参的问题,就正式动工了。
开发了大概有三个星期,已经脱离方正大大的源码。组件的思路使用双模板机制——即用户编写时是React风格编写的(es6与jsx),通过我们一番神操作,它会产生三个文件,第一个是js文件,es5与createElement风格,类机制改由ReactWX的miniCreateClass方法实现,第二个是json配置对象,涉及路由的title与窗口颜色的定义,第三个是wxml文件,我们将render方法的jsx抽取出来,变成这个文件。 现在我们的React小程序有如下优势
anu的React转小程序的性能是有保证的,它不会mpvue或taro那样使用nextTick,而是在一个页面的虚拟DOM更新完才发一次setData。这样就避免了复杂data diff与data 序列化。
事件系统上,支持onXXX与catchXXX。catchXXX是模拟阻止事件冒泡实现的API。微信小程序的同学说,用户事件是异步的,所以这里只有定义式接口,没有过程式的。 与React的差异 1. 微信小程序的事件机制有瑕疵,不支持stopPropagation与preventDefault。我们将e.detail当成事件对象,在它基础上添加type,target,touches,timeStamp等属性与空的stopPropagation与preventDefault方法 关于组件标签套组件标签,需要官方的slot机制支持,目前得到的回复是这样的: 使用从“RubyLouvre/anu下” git clone下来, 命令行定义到packages/cli目录下,执行npm link 小程序在它的体积还是1mb时,开发体验是很好的,性能也很好。但随着体积的限制放开了,产品经理开始乱搞,小程序原生的API与组件机制就跟不上了。不可能一个APP上有10个弹层,每一个都写一次吧。缺乏继承是它的硬伤。事件机制与我们熟悉的机制差太远。createSelectQuery也设计得非常弱智,wxs过于奇怪。因此有了webview标签后,许多人直接引入页面了。。。因此才有这么转译框架的诞生,包括TX内部的weby。 目前市面上许多转译框架是vue风格的,这对React技术栈的同学不公平,于是有了taro与anu的转译器。anu保留了虚拟DOM的模板,因此会比taro,mpvue更能突破小程序的桎棝。 【关于投稿】 如果大家有原创好文投稿,请直接给公号发送留言。 ① 留言格式:
觉得本文对你有帮助?请分享给更多人 关注「前端大全」,提升前端技能
|
请发表评论