vue随笔一之自执行函数
总是纠结在写不写随笔之间,自我感觉很菜,但是对源码爱得深沉,就写给自己看吧,希望查漏补缺,我会坚持写下去,欢迎大家指正。我在网上看了很多人写的源码,按照依赖的方式一个一个找包,再找函数,我觉得太麻烦,复杂。所以直接看vue.js。打开vue.js,是个自执行函数,也就是IIFE。(function(global,factory){typeof exports === 'ob...
总是纠结在写不写随笔之间,自我感觉很菜,但是对源码爱得深沉,就写给自己看吧,希望查漏补缺,我会坚持写下去,欢迎大家指正。
我在网上看了很多人写的源码,按照依赖的方式一个一个找包,再找函数,我觉得太麻烦,复杂。所以直接看vue.js。
打开vue.js,是个自执行函数,也就是IIFE。
(function(global,factory){
typeof exports === 'object' && typeof module !== 'undefined'
? module.exports = factory
: typeof define === 'function' && define.amd
? define(factory)
: (global.Vue = factory())
})(this,function(){
'use strict'
})
自执行函数想必不用我多说了,让我们来分析下这种插件与框架的写法。
它的参数为global和factory,在js环境下也就是window和Vue的构造函数。this在这里值window,如果经常看源码,就会发现很多插件会判断下 typeof window !== undefined ? window : this;这种写法更偏向于在js的window全局环境中使用。
接着看对外输出factory,首先判断 module和exports存在的情况( typeof exports === 'object' && typeof module !== 'undefined'),也就是优先使用AMD(module.exports = factory),接着判断CMD是否存在(typeof define === 'function' && define.amd ),若AMD不存在而CMD存在,则使用CMD(define(factory)),若AMD,CMD都不存在,就把Vue的构造函数挂载再全局对象上(global.Vue = factory());
更多推荐
所有评论(0)