vue核心概念

核心概念

ES6简单知识

速写属性

es6语法糖:

var name = 'lhn';
var age = 18;
var person = {
    name : name,
    age = age,
};

可以写成

var name = 'lhn';
var age = 18;
var person = {
    name,
    age,
};

速写方法

es6语法糖:

var person = {
    name : 'lhn',
    age : 18,
    sayHello : function () {
        console.log('你好');
    },
};

写成

var person = {
    name : 'lhn',
    age : 18,
    sayHello() {
        console.log('你好');
    },
};

模板字符串
var person = {
    name : 'lhn',
    age : 18,
};
var str1 = "My name is " + person.name + "\nMy age is " + person.age;
console.log(str1);

改写成

var person = {
    name : 'lhn',
    age : 18,
};
var str1 = "My name is " + person.name + "\nMy age is " + person.age;
var str2 = `My name is ${person.name}
My age is ${person.name}`;
console.log(str1);
console.log(str2);

注入

配置对象中的部分内容会被提取到vue实例中:

  • data
  • methods

该过程称之为注入

注入的目的有两个:

  • 完成数据响应式
    vue是怎么知道数据被更改了?
    vue2.0是通过 Object.defineProperty方法完成了数据响应式(此方法有一定的缺陷,无法感知新增和删除的数据变动)
    vue3.0是通过Class Proxy(es6)完成的数据响应式
  • 绑定this

虚拟DOM树

为了提高渲染效率,vue会把模板编译成虚拟DOM树,然后在生成真实而DOM
模板-->虚拟节点树VDOMTree-->真实节点树DOMTree

当数据修改时,将重新编译成虚拟DOM树,然后对前后两棵树进行对比,仅将差异部分反应到真实DOM,这样既可小程度的改动真实DOM,提升页面效率
修改数据

两个虚拟DOM树相对应节点互不相等,真实节点是相等的。目的是通过这种方法减少真实的DOM的改动
因此,对于vue而言提升效率重点着眼于两个方面:

  • 减少新的虚拟DOM的生成
  • 保证对比之后,只有必要的节点变化

vue提供了多种方式生成虚拟DOM树:

  1. 在元素内部直接书写,此时将使用元素的outHTML作为模板
  2. template配置中书写
  3. rander配置中用函数直接创建虚拟节点树,此时,完全脱离模板,将省略编译步骤

这些步骤从上到下,优先级逐渐提升
注意:虚拟节点树必须是单根的
(diff算法决定只能有两棵树作对比,多余的模板无效果)

挂载

将生成的真实DOM树,放置到某个元素位置,称之为挂载
挂载的方式:

  1. 通过el : "css选择器"进行配置
  2. 通过vue实例.$mount("css选择器")进行配置

完整流程

流程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值