脚本宝典收集整理的这篇文章主要介绍了[_v(_s(name))])}""),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
看了部分Vue源码分析或运行机制的文章,接收到这些信息:
- 使用
Object.defineProperty
实现响应监听,- 使用
Dep
,Wacther
实现依赖收集追踪- 使用
Virtual Dom
、高效diff
算法实现最小化更新对整个流程还是没有理解,或者写了流程,也是作者自己实现的一套,不是Vue的源码。为了熟悉Vue真正的流程花了点时间看了Vue的源码,通过debugger(浏览器版本)自己梳理了一遍。
以下代码来源自Vue,只做了删减,保留核心。
new Vue(options)
的执行流程,debugger的主体流程如下:
beforeCreate Hook
initSate()
initData() -- oberve
created Hook
vm.$mount(vm.$options.el)
根据template解析出render function
声明 update function
updateComponent = function () {
vm._update(vm._render(), hydrating);
};
new Watcher(vm, updateComponent, noop,{before...}
mounted Hook
不考虑updateComponent
和Hooks
剩下:
initData() -- oberve
new Watcher(vm, updateComponent, noop,{before...}
这两个步骤实现了依赖的收集与通知、以及初始化,我在github上的项目learnVue截取了Vue核心代码进行流程学习,以下是我简化后的代码:
import {Observer} from './observer';
import Watcher from "./watcher";
let noop =function(){};
let vm={
_watchers:[],
data :{
name:'jack',
age:12
}
// render:new Function("with(this){return _c('div',{attrs:{"id"":""app""}}脚本宝典总结
以上是脚本宝典为你收集整理的[_v(_s(name))])}"")
全部内容,希望文章能够帮你解决[_v(_s(name))])}"")所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。