Vue2基础知识

钩子函数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" :key="index"这个是一种常用的v-for用法,但如果item的属性有唯一主键(id)的话最好用:key="item.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()函数

javascript 复制代码
//引入vue模块
import Vue from 'vue'
//导入App组件
import App from './APP.vue'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
  //$mount('#app')挂载到#app元素上
}).$mount('#app')

在vue脚手架创建的vue2项目里有一个main.js文件,里面有一个render: h => h(App),解释一下。

vue2默认不带渲染功能,意思是如果直接写一个template,其实是不会被渲染到浏览器的,使用render()函数的话就能渲染。

javascript 复制代码
render(a) {
	console.log(a)
}

调用render函数会发现里面有一个参数,这个参数是一个方法createElement(),顾名思义,使用这个方法可以直接创建元素。再次调用render()函数根据App组件创建元素

javascript 复制代码
render(createElement){
	createElement(App)
}

箭头函数各种简化之后就变成了

javascript 复制代码
//可以是h,也可以是abcdefg,随便命名
render: h => h(app)
相关推荐
IT_陈寒几秒前
Java线程池用完不关闭?小心内存泄漏找上门
前端·人工智能·后端
ZHENGZJM9 分钟前
前端基石:React + Vite + TypeScript 项目搭建
前端·react.js·typescript
SP八岐大兔10 分钟前
NPM管理OpenClaw安装、卸载及运维命令
运维·前端·npm·openclaw
在路上`12 分钟前
前端常见问题汇总(十一)_融合AI
前端
小江的记录本14 分钟前
【JEECG Boot】 《JEECG Boot 数据字典使用教程》(完整版)
java·前端·数据库·spring boot·后端·spring·mybatis
Access开发易登软件15 分钟前
在 Access 中实现 Web 风格 To Do List
前端·数据结构·microsoft·list·vba·access·access开发
小李云雾16 分钟前
Python Web 路由详解:核心知识点全覆盖
开发语言·前端·python·路由
cd ~/Homestead18 分钟前
Vue 配置跨域的两种方法
前端·javascript·vue.js
Moment19 分钟前
AI 全栈时代,为什么推荐 NodeJs 服务端使用 NestJs
前端·javascript·后端
i220818 Faiz Ul20 分钟前
教育资源共享平台|基于springboot + vue教育资源共享平台系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·教育资源共享平台