js 模組化補充

2021-09-23 10:39:39 字數 1536 閱讀 1484

補充:除了第一種的套路,還可以這樣使用第二種。都是用來自執行函式的。第二種的好處是,還可以返回乙個true。

// 常用

;(function () {})();

// 小技巧(如果不加上!會報錯,加上之後還能返回true呢。)

// 但由於衡返回true。所以只有某些函式是只執行,不在於返回結果的可以用這種。

;!function(){};

相容套路1:適用於遵循commonjs 、 amd/cmd 的套路

;(function (root, factory)  else if (typeof define === "function" && define.amd)  else 

}(this,function () ;

})

相容套路2:jquery的套路

(function( global, factory ) 

return factory( w );

};} else

// pass this if window is not defined yet

})( typeof window !== "undefined" ? window : this, function( window, noglobal )

return jquery;

})

相容套路3:第三方中學習過來的簡單套路

"use strict";

(function(exports, undefined) ;

/***************************/

/********** game **********/

/***************************/

var game = ns.game = function(options)

};game.prototype = {};

/***************************/

/********** scene **********/

/***************************/

var scene = ns.scene = function(options)

};scene.prototype = {};

})(this);

// index.js

var game = new best.game();

是不是很奇怪乙個閉包是怎麼把變數best暴漏到外部的?這是因為閉包傳入的this。實際上是window。

另乙個重要的知識點:物件的賦值,是值引用的。什麼意思呢?舉個例子

window.a = {};

var aa = a;

aa.**** = 'you';

console.log(a); // =>

我一直以為,在js中只有閉包有值引用。原來tm天天使用的物件的賦值也是值引用的,所以才需要轉殖/深淺拷貝的概念

js模組化規範

標記已經載入成功的個數 var req total 0 模組匯出 window.exports 記錄各個模組的順序 var exp arr 判斷是否陣列 function isarray param require 真正實現 function require arr,callback else va...

理解JS 模組化

module.exports與exports,export與export default之間的關係和區別 js 模組化規範 最早是閉包的寫法,防止變數的汙染 多個js 用 defer 和 async amd 和 cmd 在es6 module 出現之後就退出歷史的舞台了 es6 module 瀏覽器...

JS中的模組化

今天看ydkjs時,明白了乙個以前一直疑惑的東西,那就是js中的模組開發,之前也使用過require.s進行模組化的開發,但是一直不能明白其中具體的原理,看了ydkjs的講解後,真的是豁然開朗,在此記錄其中乙個例項的 並進行解析。var mymodules function foo function...