微信小程序和vue的区别

数据类型

  • vue组件中data必须是函数 data(){return{}},new Vue中的选项可以是函数也可以是对象
  • 小程序中data都是对象

初始化数据,添加响应式属性

  • vue会在初始化实例的时候,遍历data中的所有属性,使用Object.defineProperty把这些属性都转成getter/setter,给他们添加响应式。
  • 小程序不会

设置属性

  • 由于添加了响应式,更改数据的话可以直接this.data.name='xx',对于动态新增的数据,就要用
    • 对象可以用
this.$set(this.data.someObject,'b',2),

或者重新赋值,或者

this.$delete(this.data.someObject,propertyName)
  • 数组可以直接用新的值重新赋值,或者this.$set,或者pop,push,shift,unshift,reverse,sort,splice,
  • 小程序统统都是this.setData中去赋值,对于数组中的子元素可以this.setData({['list[0]']:newValue}),也可以'obj.propertyName':newValue

Vue.set是为了给动态新增的数据增加响应式,这样才能更新到视图上(使用 Object.defineProperty 把这些属性全部转为 getter/setter),直接改的话也能在数据中更新成功,但视图不会有变化
data是个原型链上的函数,在构造函数的时候,将

return{
_data:...this.data(),
...this,
...this.data(),
},

使得每个实例都有自己的作用域,当操作this.data.obj.name='123'的时候,等同于this.data().obj.name='123'.

微信小程序中是将data对象作为原型上的_freeData对象保存,就像vue中的$data,执行构造函数的时候再去给每个实例开辟空间

在vue中,this.data.name='aaaa',是可以更新到视图的,小程序中不行

vue,写在data中的数据都添加了响应式属性,进行了监听处理,如果事后要新增的话,只能用Vue.set方法

小程序中,没有对data中的数据添加响应式属性,所以就算data中写不全,也没关系,要更新视图的话用
this.setData方法,一次性为这些属性渲染到视图上

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 因新工作主要负责微信小程序这一块,最近的重心就移到这一块,该博客是对微信小程序整体的整理归纳以及标明一些细节点,初...
    majun00阅读 7,642评论 0 9
  • svg **1 由颜色值构成,矢量图,放大不失真;2 不是h5新标签;3 有属性,可以添加事件;4 性能一般** ...
    _undefined__阅读 298评论 0 0
  • 此时正在办公,也不忘忙中偷闲。一枚贪吃的吃货正出没...... 因为有你的相伴,倒平添了不少欢愉。感谢有...
    小孜阅读 296评论 0 2
  • 拆页一 来自《第一章 关系始于亲和的建立》 P6亲和力与转化式对话转化式对话是一种谈话方式,这种方式可以使你自己和...
    SelinaYin阅读 258评论 0 0
  • 第一章:初来乍到 韩国,首尔,某娱乐公司练习室正在举办一场练习生面试。。走廊上一个帅气少年一脸讨好的表情在讲电话 ...
    轩_Q阅读 179评论 0 0

友情链接更多精彩内容