學習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;
以上個人了解,如有錯漏請指正,虛心求教。