背景
2018年,许多app已经支持小程序,如:百度、微信、支付宝,解放app的思想,得到了很多人的青睐,但小程序平台的日益增多, 给开发者带来了许多困扰,如果想在多个平台发布功能相同的小程序,就需要开发多套代码,效率偏低。 于是我们想通过一个目前前端比较流行的框架(Vue)作为开发语法,通过预编译的手段,同时输出多个平台的代码 (目前支持百度、微信),这就是我们今天的主角Duv。
原理
编写的Vue代码想在小程序端运行,分为看两部分:模板编译,Vue运行时
模板编译
我们基于vue-loader开发了duv-laoder,它支持将Vue的template部分转换成为小程序模板(wxml/swan), 并对不同平台小程序的api进行编译处理。
Vue运行时
Vue运行时,首先创建小程序实例,小程序中的事件处理先到达小程序实例,通过统一的事件代理,找到Vue实例 部分对应的代码,当Vue实例setData时,不进行virtual DOM 的diff等操作,直接通过数据代理, 将修改的数据交给小程序端进行处理。
优势
- 一套代码生成多个平台小程序
- 性能接近原生小程序
- 支持npm插件
- 兼容Vue 90%以上常用语法
- 提供脚手架工具,快速创建