uni-app 在发布到H5时支持所有vue的语法;发布到App和小程序时,由于平台限制,无法实现全部vue语法。

相比Web平台, Vue.js 在uni-app中使用差异主要集中在两个方面:

  • 新增:uni-app 除了支持Vue实例的生命周期,还支持应用生命周期以及页面生命周期。
  • 受限:相比web平台,在小程序和App端部分功能受限,具体如下:

全局配置

  • 非H5端不支持 Vue.config.devtools
  • 非H5端不支持 Vue.config.keyCodes
  • 非H5端不支持 Vue.config.performance

全局API

  • 非H5端不支持 Vue.nextTick
  • 小程序不支持 Vue.directive
  • 小程序不支持 Vue.filter
  • 小程序不支持 Vue.compile

选项

  • 非H5端不支持 el
  • 非H5端不支持 template
  • 非H5端不支持 render
  • 非H5端不支持 renderError
  • 小程序不支持 directives
  • 非H5端不支持 delimiters
  • 非H5端不支持 functional
  • 小程序不支持 model
  • 小程序不支持 inheritAttrs
  • 非H5端不支持 comments

    生命周期

  • 小程序端不支持 activated
  • 小程序端不支持 deactivated

实例属性

  • 非H5端不支持 vm.$el
  • 小程序不支持 vm.$isServer
  • 小程序不支持 vm.$attrs
  • 小程序不支持 vm.$listeners

实例方法

  • 非H5端不支持 vm.$mount()

模板指令

  • 小程序不支持 v-html
  • 小程序不支持 v-pre
  • 非H5端不支持 v-cloak
  • 小程序不支持 v-once
  • 小程序不支持传入一个对象的所有property,即: v-bind=”object”

特殊属性

  • 小程序不支持 is
  • 非H5端不支持 classObject 和 styleObject 语法。
  • 非H5端(非自定义组件编译模式)暂不支持在自定义组件上使用Class与Style绑定。

内置组件

  • 小程序不支持 component
  • 非H5不支持 transition
  • 非H5不支持 transition-group
  • 非H5不支持 keep-alive

CSS

  • 小程序不支持:root,应该使用 page;page 编译到H5会变成 uni-page-body 元素

事件

  • vue3中移除了.native 修饰符,编译器无法预知 click 是要触发原生事件,还是组件的自定义事件,故并未转换成小程序的 tap 事件;故小程序端自定义组件无法监听click事件,需要在组件内部把click事件emit出去,或者只监听tap事件。

其他

  • 小程序不支持 svg
  • 小程序不支持 多个根节点
  • 微信/QQ/百度/抖音小程序,自定义组件在渲染时会比App/H5端多一级节点
  • 小程序有虚拟节点的概念,有的小程序的自定义组件在渲染时会比App/H5多一级节点,通过 virtualHost 可以 设置是否需要这个虚拟节点;把 virtualHost 设为 false,再把 mergeVirtualHostAttributes 设为 true,就可以有贴近 vue 的开发体检。