uni-app编译模式

作者: 瑟闻风倾 | 来源:发表于2019-07-26 16:58 被阅读0次

1. 实践问题说明

  • 因为老项目是在非自定义编译模式下开发的(老项目在hello uni-app的基础上进行开发的),新项目又复用了老项目。但是新项目在开发的过程中遇到了层级覆盖的问题(感兴趣可参考uni-app之实现层级覆盖),需要将编译模式改为自定义编译模式。
  • 非自定义组件模式升级为自定义组件模式时,自定义组件模式虽然兼容大部分老模式的写法,但也有部分不兼容。老项目升级时,可能需要修改部分代码,请详细参考:自定义组件模式开发注意事项

拓展:本人在升级的过程中也遇到了问题,非自定义编译模式下项目中的拓展组件在编译模式升级后不能正常运行,需要进行修改,最简单的办法是删除未使用的拓展组件,新建hello uni-app项目(HBuilderX正式版默认保留老框架,Alpha版默认开启新框架;HBuilderX 1.8.0+ 新创建的项目默认也会启用新的框架)找到对应的拓展组件文件替换新项目中需要使用但报警告的拓展组件。


升级编译模式后自定义组件开发注意.png 编译模式切换后引发的拓展组件警告.png

2. 编译模式切换(新老框架切换)

在 manifest.json 的可可视化界面(或源码视图)里配置是否启用新编译器(自定义组件模式),目前除了h5各种都可配置是否启用自定义组件模式。


image.png

若manifest.json配置文件中,未明确指定编译模式(即未配置%platform% -> usingComponents),则uni-app默认策略如下:

  • HBuilderX 正式版为保证历史项目兼容,默认使用老编译器(template模板模式),即不配置的情况下效果等同于 usingComponents: false
  • HBuilderX Alpha 为开发者提供最新技术尝鲜,默认会启用新编译器(自定义组件模式),即不配置的情况下效果等同于 usingComponents: true
  • CLI 开发模式下的,默认编译策略同 HBuidlerX 正式版策略

备注:切换编译环境之后,请重新运行项目

3. 编译模式介绍

3.1 uni-app 自 1.8版本开始,同时支持两种编译模式:

  • template模板模式:老框架模式,借鉴自mpvue,将用户编写的Vue组件,编译为WXML中的模板(template),变相实现组件化开发,性能差,支持 Vue 语法少,比如不支持过滤器。
  • 自定义组件模式:新框架模式,DCloud自研,将用户编写的Vue组件,编译为微信小程序自定义组件,实现了更高的性能更完善的 Vue 语法支持。同时在App端提供了独立的js引擎,大幅提升性能

3.2 不同编译模式支持的Vue语法差异

(1) 自定义组件模式和模板模式都不支持的 vue 语法:

  • class不支持绑定Obejct变量(使用字符串的形式绑定)
  • 不支持事件修饰符:prevent、passive(在App与小程序平台,使用stop修饰符,既可以阻止冒泡也能阻止默认行为)
  • 不支持render、inline-template、X-Templates、keep-alive、transition
  • 不支持使用 Vue.use 的方式注册全局组件(在main.js使用Vue.component的方式引入)

备注:自定义组件模式的组件性能更高,支持更多的Vue语法

(2) template模板模式除了不支持如上Vue语法外,额外还不支持如下语法:

  • 不支持过滤器 filter
  • 不支持比较复杂的 JavaScript 渲染表达式
  • 不支持在 template 内使用 methods 中的函数
  • 不支持 v-html
  • 不支持 v-slot 新语法及后备内容
  • 不支持解构插槽 Prop 设置默认值
  • 组件不支持原生事件绑定,如:@tap.native
  • 组件不支持通过class绑定样式

备注:建议升级老版项目为自定义组件模式,老版的模板编译模式将不再维护

相关文章

  • uni-app编译模式

    1. 实践问题说明 因为老项目是在非自定义编译模式下开发的(老项目在hello uni-app的基础上进行开发的)...

  • uni-app 创建

    创建 uni-app 有两种方式 快速搭建 uni-app 使用编译器HbuilderX 创建 使用 vue-cl...

  • 如何在uni-app中使用native.js

    开启自定义组件模式 需写在app端条件编译里:uni-app在app侧,本质是全是5+引擎,5+引擎包括了html...

  • uni-app 项目支持 vue 3.0 介绍,及升级指南

    简介 HBuilderX 3.3.0+ 更新uni-app编译器,支持基于 Vite 编译到小程序平台。 至此,u...

  • uni-app入门到实战总结(上)

    第2章 uni-app 基础 2-1 回顾小程序 2-3 uni-app 核心知识点概览 条件编译写法说明#ifd...

  • uni-app框架介绍

    uni-app框架介绍 介绍 uni-app 是一个跨端开发框架,一套代码运行多个平台,并可以使用条件编译实现不同...

  • uni-App 使用体验

    uni-App 号称一处编写,处处编译,用h5写代码,可以编译到所有平台。Android,iOS,微信小程序,支付...

  • uni-app源码分析

    通过脚手架创建uni-app并编译 使用脚手架创建的项目可以更清晰的看到它的架构,也可以直接阅读打包编译的源码。 ...

  • 使用 hasOwnProperty 碰到的一个问题

    0. 环境 使用 uni-app 开发编译小程序开发工具版本号:RC 1.06.2205231调试基础库:2.21...

  • 【uni-app:error】微信开发者工具拒绝HBuilder

    平台 Mac OS、HBuilderX 问题 uni-app运行编译到微信小程序开发者工具时,报如下错误image...

网友评论

    本文标题:uni-app编译模式

    本文链接:https://www.haomeiwen.com/subject/evtdrctx.html