[Vue]如何实现全屏遮罩(附Vue.extend和el-message源码学习) 在做个人项目的时候需要做一个类似于电子相册浏览的控件,实现过程中首先要实现全局遮罩,结合自己的思路并阅读了(饿了么)element-ui中el-message的实现,来总结一下Vue中比较好的一种全局遮罩的实现方式. 调用遮罩的方式 一般由两种写法: 1.(类似el-dialog的一种写法) 在html文件中写好结构,控制元素的显示与隐藏的实现遮罩. <div class="container"&…
大体思路(九) 本节内容: 1. $mount 挂载函数的实现. // 将Vue.prototype.$mount 缓存下来 ==>mountComponet(this,el) { // 组建挂载的时候做的事情 var uodateComponent = function(){ // 1. render返回生产的虚拟节点 // 2. _update 将虚拟节点变为正真的dom } // 渲染函数的观察者对象 初识 Watcher undateComponent被观察目标 new Watcher(…
大体思路 (四) 上节回顾: 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. baseoptions 参数分析 2. options 参数分析 3. parse 编译器 4. parseHTNL 函数解析 // parse 解析 parser--名词--解析器 ==> getShouldDecode() inBroeser // 监听所有的标签 //监听href shouldDecodeNewLines / shouldDecodeNewLinesForHref delimiters: options.delimiters //改变文本插…
大体思路 (五) 1. initProxy 渲染函数的作用域代理 ==> es6 如果支持proxy (hasProxy) 就用proxy 不支持就用 defineProperty() proxy 和 defineProperty 区别? definedProperty 只能监听对象的属性 描述属性 proxy 是一个构造函数 监听对象 支持拦截操作 代理obj对象对obj并不直接做处理. var obj = {name: 'max'} var peoxyobj = new Proxy(obj,…
在看 underscore.js 源码的时候,接触到了这样两个方法,很有意思: 我先把实现的代码撂在下面,看不懂的可以先跳过,但是跳过可不是永远跳过哦- 一个是 throttle: _.throttle = function(func, wait, options) { var context, args, result; // setTimeout 的 handler var timeout = null; // 标记时间戳 // 上一次执行回调的时间戳 var previous = 0; /…
mustache.js(3.0.0版本) 是一个javascript前端模板引擎.官方文档(https://github.com/janl/mustache.js) 根据官方介绍:Mustache可以被用于html文件.配置文件.源代码等很多场景.它的运行得益于扩展一些标签在模板文件中,然后使用一个hash字典或对象对其进行替换渲染操作. 基本语法如下: 1. {{ keyName }}: 读取属性值, 如果有html标签的话,会被转义. 2. {{{ keyName }}}: 读取属性值且原样…
Docker在最近很火,而作为Docker的开发语言-Go也再次被大家提到. 已经使用Docker一段时间了,但是对于源码,尤其是其开发语言Go却一直是一知半解. 最近准备利用空余时间从Docker源代码入手来学习一下Go,同时对Docker的实现也希望可以提高一个层次. 有兴趣的可以一起讨论,学习. 准备工作: 1. Docker源代码https://github.com/docker/docker (版本1.1.2) 2. 安装开发工具LiteIDE, 这个是官方的Go语言的IDE 3. G…