新闻详情

第五届 FEDAY 于 2019.09.21 在成都成功举办。来自全球、有极丰富经验和技能的前端专家,同全国各地的开发者尽情畅谈交流。

DCloud 前端架构师 崔红保 受 FEDAY 主办方邀请出席,并为大家带来了“基于 weex 实现的小程序引擎”的主题演讲。

他在主题演讲中先简单介绍了uni-app框架的跨端特征,然后谈到,为了保障多端一致性,uni-app在App端模拟实现了完整的小程序引擎;但小程序引擎是一个逻辑、视图分离的架构,视图层基于webveiw渲染,这样的架构设计发行到App端时会有如下明显缺陷:

基于 webview 渲染,性能体验不如原生
所有页面 JavaScript 业务代码都会在逻辑层中加载,导致 App 启动加载慢
setData通讯阻塞,导致控件跟手动画不流畅(故衍生出了 wxs 的设计)

基于这些问题,uni-app在App端启用双渲染引擎模式,基于weex单独实现了一套小程序引擎;崔红保接着从组件、API等维度,详细阐述 uni-app 如何拉齐 weex 和小程序规范之间的差异:

拉齐组件
weex组件和小程序组件是完全不同的两套模式。uni-app提供了2种编译模式:weex编译模式和uni-app编译模式。weex编译模式同之前的weex。但uni-app编译模式,则使用小程序组件,包括view、swiper等基本小程序组件,甚至map、live-pusher等复杂组件,全部可以直接渲染到改造后的原生渲染引擎上。

拉齐API和生命周期
小程序的各种API,不管是基础的request联网,还是复杂的如扫码等设备能力调用,也全部实现。
包括小程序的 App 生命周期、getApp 接口及 app.wxss 全局样式的模拟。
除了小程序API,App开发还需要使用更多API,比如push、创建安卓桌面图标...... uni-app提供了更多扩展的JS API,减少开发者需要开发原生代码的几率,提高开发效率。例如uni push,统一了苹果、华为、小米、oppo、vivo、魅族及个推等全部推送服务,开发者只需对接一次,全平台均可安全送达。
uni-app 还在 weex 的基础上完善 vuex 的使用,实现了全局状态共享。最后,崔红保还简要分享了uni-app在小程序端、H5端做过的性能优化探索。
uni-app还提供原生SDK,也就是集成这个SDK,开发者的App将具有运行原生渲染小程序的能力。
uni-app 将在追求性能极致和大一统的道路上继续前进!
相关代码全部托管在 github
欢迎大家 star 或提交 pr!