uni-app开发小程序与微信原生开发的区别
渲染
uni-app是逻辑和渲染拆散的。渲染层,在app端提供了两套排版引擎:小程序形式的webview渲染,和weex形式的原生渲染。
两种渲染引擎能够本人依据须要选。vue文件走的webview渲染,nvue走的原生渲染。
个别状况下用vue就能够了。如果是app且有局部场景vue页面的性能不满足你的需要时,这个页面能够改用nvue页面。如果app里同时存在同名的vue和nvue页面,在app端会优先执行nvue页面,而其余端依然优先vue页面。
vue是浏览器模式渲染,多端通用,绝对更稳固,坑更少。nvue是weex模式渲染,针对app做了优化,坑比拟多,某些场景性能好一点点
语法
反对vue语法和小程序语法
生命周期
1.利用的生命周期(同小程序)
<script> // 只能在App.vue里监听利用的生命周期 export default { onLaunch: function() { console.log('App Launch') }, onShow: function() { console.log('App Show') }, onHide: function() { console.log('App Hide') } }</script>
利用生命周期仅可在App.vue中监听,在其它页面监听有效。
2.页面的生命周期 (小程序页面当中的生命周期)
- 页面生命周期仅在page页面无效,而独自封装的组件中【页面周期有效】,然而Vue 的生命周期仍然无效 【Vue的生命周期在任何中央都是无效的】
- 举荐应用uni-app外面的onReady 代替 vue 外面的 mounted
- 举荐应用uni-app外面的onLoad 代替 vue 外面的 created
3.组件的生命周期函数(vue的生命周期在任何中央无效)
- mounted、updated 和 destroyed。生命周期钩子的 this 上下文指向调用它的 Vue 实例。
- 不要在选项属性或回调上应用箭头函数,比方 created: () => console.log(this.a) 或 vm.$watch(‘a’, newValue => this.myMethod())。因为箭头函数并没有 this,this 会作为变量始终向下级词法作用域查找,直至找到为止,常常导致 Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 之类的谬误。
组件
uni-app反对的组件分为vue组件和小程序自定义组件。
日常开发来讲,举荐应用vue组件。uni-app反对小程序组件只有是为了兼容更多生态资源。
easycom的组件标准
传统vue组件,须要装置、援用、注册,三个步骤后能力应用组件。easycom将其精简为一步。
easycom打包后会主动剔除没有应用的组件,对组件库的应用尤为敌对。
如果不应用easycom,则按vue组件的标准引入即可。
配套的uni-ui组件库
1.高性能
- 主动差量更新数据
- 优化逻辑层和视图层通信折损
背景进行
2.全端
- uni ui的组件都是多端自适应的,底层会抹平很多小程序平台的差别或bug。
- uni ui反对nvue原生渲染和pc
组件的应用上:内置 > uni-ui > 插件市场
API
反对小程序的API,原生开发的API
uni-app长处
1.反对原生小程序的API,反对原生写法,在性能上与原生小程序没有太大区别
2.vue的语法,相熟vue的能够间接上手开发
3.在数据更新上,uni-app基于Vue的diff算法更新,缩小了setData的传输数据量和调用次数
uni-app毛病
1.文档不齐全,遇到问题反馈回复不及时
2.app开发成果不迭原生