vue和js的几个问题的简单描述

1.new vue主要init了什么
initlifecycle
initevents
initrender
initstate
initinjections
initprovide

2.vue挂载过程
首先mount方法拿到template通过compileToFunction编译为render函数,首先读缓存看有没有render,如果没有就调用compile方法获得render字符串形式,再通过new function的方式转为render函数,compile方法有三步:1.parse函数,主要功能是采用html parses将template转为AST。2.optimize 标记静态节点,为后面patch过程中新旧vnode比较做优化,标记为static的节点的子树,不参与下面diff运算的比较。3.generate 主要功能是拼接声称render函数的字符串

3.router实现原理
在router/index.js定义跳转组件的路径,在点击router-link的时候,执行history方法hash不包含在http的请求中,每次hash变化都在浏览器记录里添加,并跳转这个路径链接,根据定义的路径检索组件(组件名与路径/后面的名称对应)将router-view标签内部的html替换为该组件的html,。以上为我个人的理解。

4.computed与watch区别
computed计算依赖数据得到一个结果存到缓存,下次依赖的数据没有变化就直接读缓存,不能执行异步,调用defineproperty用到了getter和setter方法(defineproperty主要修改或更新某个属性或者对象)
watch是监听某个属性,接受新值,更新旧值,支持异步,watch如果设置了immediate: true属性,不需要等待数据变化,在初始化时就立刻执行一次,如果设置了deep: true,会深度遍历,收集每个对象属性添加到watch的watcher,当任意一个属性变化时,watch的handle就会被调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值