网站建设孝感,国内高端品牌网站建设,电商自学网,太原做网站哪里好钩子函数created()和mount()区别
created()是在创建数据代理之后执行的#xff0c;mount()是在将虚拟dom渲染成真实dom之后执行的
vue的数据代理和数据劫持
开发者工具里获取vue中data的一个数据时可以看到有一个{...},在我们点击之后才能获取到数据。 这是因为vue在初始化…钩子函数created()和mount()区别
created()是在创建数据代理之后执行的mount()是在将虚拟dom渲染成真实dom之后执行的
vue的数据代理和数据劫持
开发者工具里获取vue中data的一个数据时可以看到有一个{...},在我们点击之后才能获取到数据。 这是因为vue在初始化时用Object.defineProperty()做了数据代理所以data里的每个属性都会有getter()方法和setter()方法。 数据代理就是我们访问data里的数据调用Object.defineProperty()里的getter()方法。 数据劫持就是我们修改data里的数据调用Object.defineProperty()里的setter()方法。
vue2响应式
响应式数据就是数据改变后页面也会随之重新局部渲染diff算法 vue2不能使用this.变量名 变量值设置一个响应式数据需要用this.$set()方法
v-for里的:key值
v-for(item, index) in array :keyindex这个是一种常用的v-for用法但如果item的属性有唯一主键(id)的话最好用:keyitem.id,在array插入一个元素或删除一个元素的时候能优化重新渲染元素的性能(diff算法)
export default{}和Vue.extend({})
在初学Vue组件化的时候都会使用Vue.extend({}),为什么后面直接变成export default{}了呢? 在使用const vc Vue.extend({})的时候,子组件同样需要export进行导出,也就是在该组件文件末尾需要export default vc;。 vue2文档规定在创建子组件的时候可以省略Vue.extend()意思是创建Vue组件对象不需要调用Vue.extend()方法,在Vue对象的Components方法注册子组件的时候,Vue脚手架会为Vue子组件自动调用Vue.extend()方法,所以我们就从Vue.extend({})优化成了{},再加上默认导出就变成了export default{}
render()函数
//引入vue模块
import Vue from vue
//导入App组件
import App from ./APP.vueVue.config.productionTip falsenew Vue({render: h h(App),//$mount(#app)挂载到#app元素上
}).$mount(#app)
在vue脚手架创建的vue2项目里有一个main.js文件,里面有一个render: h h(App)解释一下。 vue2默认不带渲染功能意思是如果直接写一个template,其实是不会被渲染到浏览器的,使用render()函数的话就能渲染。
render(a) {console.log(a)
}调用render函数会发现里面有一个参数这个参数是一个方法createElement()顾名思义使用这个方法可以直接创建元素。再次调用render()函数根据App组件创建元素
render(createElement){createElement(App)
}箭头函数各种简化之后就变成了
//可以是h,也可以是abcdefg随便命名
render: h h(app)