HBuilderX 自 2.0.3 版本开始,nvue文件同时支持两种编译模式:
weex 模式:老模式,使用 weex组件,写法同weex标准写法。只能在 App 端中运行,部分 uni-app JS Api 不能使用。
uni-app 模式:新模式,默认模式,使用 uni-app 基础组件,组件、jsapi写法同uni-app。支持app.vue里的全局样式;支持nvue页面编译H5和小程序端;可以使用绝大部分 uni-app Api 。uni-app模式也可以使用weex里的组件,比如list、refresh、recircle-list。
为什么要提供2个模式?
weex模式的组件、渲染机制是weex官方维护的。它的渲染性能其实与react native是一样的,在性能体验方面足以应付一线互联网公司的苛求。但它有4个问题:
内置组件较少,或不完善。与小程序的组件相比,weex缺少太多内置组件,比如picker、map。而video等weex已内置的组件,也不够强大
API缺失严重。因为weex只是个渲染器,它调用设备能力或push等三方sdk,都需要原生开发。
周边生态不完善。weex生态没有什么好的组件和模板。而uni-app的插件市场里众多优秀的组件和模板又无法用于nvue。
nvue无法多端开发,只能用于app。开发者在多端需要维护多套代码。
weex的排版思路和uni-app的vue差异有点多。比如weex不支持rpx。我们希望使用原生渲染,但尽可能多的兼容开发者的习惯。
weex的第二个问题,即能力问题,uni-app通过给nvue补充uni AP