[Vue]如何实现全屏遮罩(附Vue.extend和el-message源码学习) 在做个人项目的时候需要做一个类似于电子相册浏览的控件,实现过程中首先要实现全局遮罩,结合自己的思路并阅读了(饿了么)element-ui中el-message的实现,来总结一下Vue中比较好的一种全局遮罩的实现方式. 调用遮罩的方式 一般由两种写法: 1.(类似el-dialog的一种写法) 在html文件中写好结构,控制元素的显示与隐藏的实现遮罩. <div class="container"&…
大体思路 (四) 上节回顾: A: 对于生命周期函数将父子组件的函数放到一个数组里面,特定时间点调用,保证父子组件函数都调用到. B: 对于directive,filters,components 等的资源选项,父选项将以原型的形势处理,正式因为这样子,在任何地方都可以用到内部自定义指令. C: 对于watch选项的合并,类似于生命周期,如果父子组件相同的观测字段,将合并为一个数组. 本节内容: props normalizeProps normalizeDirective 规范化 props…
大体思路 (三)    1.钩子函数 自定义策略       LIFECYCLE_HOOKS= []      created = [function(){} , function(){}] 组装方法.      ==> starts[hook]= mergeHook            ==>  mergeHook(parent,child) // 合并parentVal 和childVal  2.资源选项 自定义策略         ==> ASSET_TYPES = []    …
大体思路 (三)  1. 子类父类  2.Vue.extend()      //创建vue的子类 组件的语法器 Vue.extend(options) Profile().$mount('#app') // 挂在app上,并替换app 新建 initExend ==> Vue.extend  3. strat.data ==> if(!vm){子组件中data的值是一个方法function ==> mergeDataorFn()} // 数据的合并 ==> else {} //通…
 一.  整体思路     1 首先是代码的大体构造,先判断引入代码的环境,即对应amd 和cmd的处理     2 vue_init 需要借助 initMinxin    ==>>>       // 初始化选项1: 规范 2: 合并策略.     3 mergeOptions 选项合并 一个或者多个对象合并,并且生成一个新的对象          ==>  resloveConstructorOptions 返回vm的optios 判断是否是vue对象有可能是vue子类.不一定…
大体思路(十) 本节内容: 1. baseoptions 参数分析 2. options 参数分析 3. parse 编译器 4. parseHTNL 函数解析 // parse 解析 parser--名词--解析器 ==> getShouldDecode() inBroeser // 监听所有的标签 //监听href shouldDecodeNewLines / shouldDecodeNewLinesForHref delimiters: options.delimiters //改变文本插…
大体思路(九) 本节内容: 1. $mount 挂载函数的实现. // 将Vue.prototype.$mount 缓存下来 ==>mountComponet(this,el) { // 组建挂载的时候做的事情 var uodateComponent = function(){ // 1. render返回生产的虚拟节点 // 2. _update 将虚拟节点变为正真的dom } // 渲染函数的观察者对象 初识 Watcher undateComponent被观察目标 new Watcher(…
大体思路(八) 本节内容: 1.Observe 如何响应数组的变化 代理原型 数组变异方法 shell cacheArrProto methods 新添加的数组需要加到显示系统里面,拦截 push等的方法 swith(method){ case:"push"/"unshift" : 存储东西} observer.prototype.observeArray = function(items){ observe(item[i]) } observe ==> va…
大体思路(七) 本节内容: deps 依赖收集的数组对象 => Dep 构造函数 /** ==> observe() * var ob * ==> if --isObject * ==> if -- shouldObserve isExtensible is_Vue 是否可扩展 * ==> ob = new Observe(value); * == if ob.vmCount++ * ==> reutrn ob * Observe(value){ * this.valu…
大体思路(六) 本节内容: 一.生命周期的钩子函数的实现 ==> callHook(vm , 'beforeCreate') beforeCreate 实例创建之后 事件数据还未创建 二.初始化initState ==>initState(vm) // 初始化数据 ==> initProps(vm,opts.props) 待续 ==> initMethods 待续 ==> initComputed 待续 ==> if data initData else { obser…