
vue源码分析
vue
_HtwoO
这个作者很懒,什么都没留下…
展开
-
防Vue系列-12 数据代理Proxy函数
上一节:防Vue系列-11 为防Vue系列-07添加响应式代码在vue中可以通过this.age来获取age的值接下我们将创建一个proxy函数作用数据代理 /** *@params target:any (当前vue实例对象) *@params data:String *@params key:any */ // 中间代理proxy 将某个对象属性映射到另一个对象的属性上 function proxy(target, data,原创 2021-03-22 16:33:58 · 290 阅读 · 0 评论 -
防Vue系列-11 为防Vue系列-07添加响应式代码
// ==========================响应式函数deepProperty=================================== // 要拦截的数组方法 let arrs = [ "push", "pop", "shift", "unshift", "reserve", "splice", "sort", ]; ...原创 2021-03-21 23:06:58 · 116 阅读 · 0 评论 -
防Vue系列-10 扩展deepProperty函数,拦截数组的方法
创建拦截数组的一个代理方法 // 要拦截的数组方法 let arrs = [ "push", "pop", "shift", "unshift", "reserve", "splice", "sort", ]; // 获取数组对象 let arrays = Object.create(Array.prototype); // 在原型数组中添加拦截器 arrs.forEach((elem原创 2021-03-21 21:24:20 · 143 阅读 · 0 评论 -
防Vue系列-09 deepProperty封装Object.defineProperty
再次思考怎么将 obj 变成响应式 var obj = { title: "英雄联盟", heros: [ { name: "金克斯", arms: "枪炮" }, { name: "蛮王", arms: "大刀"}, ], map: { title: "小地图", }, };将上篇文章的Object.defineProperty函数封装处理/***@params target:原创 2021-03-21 19:38:34 · 158 阅读 · 0 评论 -
防Vue系列-08 初步了解响应式原理Object.defineProperty
vue中怎么做到当数据发生变化的时候,页面中的数据也跟着响应发生了变化?请看以下代码这里运用了原生的Object.defineProperty这个api,vue中上帝的钥匙/***@params obj:Object 要响应的对象*@params key:String obj中的响应的key值*@params config:Object 配置 enumerable是否可以被枚举*/let obj = { name: "小陈", age: 18, sex:"男" }Ob原创 2021-03-21 19:01:43 · 119 阅读 · 0 评论 -
防Vue系列-07 将前几篇的代码知识点进行整合
本篇主要讲之前的代码的知识点,进行整合这里我们用combine替换之前的compilercombine用来合并数据与带有{{}}虚拟的Domcompiler用来合并数据与带有{{}}真实的Dom<div id="root"> <p>{{ name.firstName }}</p></div>// ==========================combine函数 合并数据与带有{{}}虚拟的Domdom===================原创 2021-03-21 17:57:16 · 127 阅读 · 0 评论 -
防Vue系列-06 了解函数柯里化
这里来个小插曲,学习一下函数柯里化(高阶函数),下列函数的作用是缓存obj,减少不必要的重复加载冗余的代码 let tagStr = "div,h1,h2,span,a,strong,p"; //目标字符串 function isAttrMap() { let arr = tagStr.split(","); let obj = {}; arr.forEach((el) => { obj[el] = true;原创 2021-03-21 16:42:52 · 171 阅读 · 0 评论 -
防Vue系列-05 怎么将VNode转换成真正的Dom
接着上篇文章初步了解 virtual DOM创建createElement函数 作用:将VNode转换成真正的Dom /* *@params tag:String 'div||span||h1' *@params data:Object '{id:'root,class:'theme'...}' *@params value:String 'nodeValue || undefined' *@params type:Number 'nodeType=1 || 2 ||3 ' *@par.原创 2021-03-21 13:32:57 · 1030 阅读 · 0 评论 -
防Vue系列-04 初步了解 virtual DOM
virtual DOM(虚拟dom,VNode)为什么要用VNode,主要是考虑性能问题,频繁的操作dom会有点性能问题,主要是我们只修改一部分的数据,却要重新渲染整个dom。接下来让我们来初步了解一下VNode思考怎么将一下的dom 标签转换成,VNode对象形式<div id="root" class="theme"> <h2 class="a" title="hello">hello1</h2> <div>hello2&l原创 2021-03-21 12:45:11 · 143 阅读 · 0 评论 -
防Vue系列-03 添加解析data.xxx.xxx函数
怎么将解析data.xxx.xxx <div id="root"> <p>{{ name.firstName }}</p> </div>如何解析{{name.firstName }}//解析data.xxx.xx/***@params obj:Object data:{nama:{firstName:'小',lastName:'陈'}}*@params path:String 'xxx.xxx'/ funct原创 2021-03-21 11:12:14 · 123 阅读 · 0 评论 -
防Vue系列-02 将上篇的代码改成Vue的形式
改成Vue的形式//正则,用来匹配{{}} let r = /\{\{(.+?)\}\}/g;/***@params template:DOM*@params data:Object*/function compiler(template, data) { let childNodes = template.childNodes; //取出root下的子节点 // 遍历子节点 for (let index = 0; index < childNodes.length;原创 2021-03-20 22:16:40 · 144 阅读 · 0 评论 -
防Vue系列-01 怎么将带{{}}真实dom的数据转成带数据dom
怎么将带{{}}真实dom的数据转成带数据dom//步骤拆解 // 1.拿到模板 let templateTest = document.querySelector("#root"); // 2.拿到data let data = { name: "张三", msg: "信号", age: 18, }; //正则 let r = /\{\{(.+?)\}\}/原创 2021-03-20 21:01:26 · 128 阅读 · 0 评论 -
vue源码分析
引导篇原创 2021-03-20 21:00:47 · 146 阅读 · 0 评论