学习Vue,不光要学习它的用法,也要学习他的精髓。
学习Vue精髓,最直接的方法就是阅读源码。
阅读源码,理解源码的含义。
仰望星空,脚踏实地。
下面这段代码引用自Vue.js v2.6.11。
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ?
module.exports = factory()
:
typeof define === 'function' && define.amd ?
define(factory)
:
(global = global || self, global.Vue = factory());
}(this, function () { 'use strict';
//此处省略一万行。。。
}));
整体结构是立即执行函数。
带两个参数,一个global用作全局变量存放,一个factory工厂函数制造一些初始化方法。
typeof判断变量类型,以此校验执行环境
需要理解逻辑运算符之间的优先级,
其中用到了几个不理解的变量,属性和方法,分别是 module、module.exports、define、define.amd
1,立即执行函数
故名思义,函数在定义完之后立即调用,这样的一种执行方式。
和C不同的是,js解析这个立即执行函数需要用()包起来,
(因为js解析function时默认把句首的function解读成语句而不是表达式)
作用:
- 隔离作用域,
- 封装变量,
- 不必命名函数而污染全局变量。
2,逻辑运算符之间的优先级
优先级看这篇就够了,|| > && >三目 写的很清楚。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
顺便回忆一下短路原则
3,module、module.exports、define、define.amd的理解
通过下面的AMD(异步模块定义)中文规范可以很容易理解define、define.amd
https://github.com/amdjs/amdjs-api/wiki/AMD-(中文版)
module、module.exports关系:一句规范中的代码的理解:var module = module.exports;
以上个人理解,如有错漏请指正,虚心求教。