最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript模塊管理的簡單實現(xiàn)方式詳解

 更新時間:2019年06月15日 14:43:13   作者:Unknw  
這篇文章主要介紹了JavaScript模塊管理的簡單實現(xiàn)方式,它方便組織你的代碼,提高項目的可維護性。一個項目的可維護性高不高,也體現(xiàn)一個程序員的水平,在如今越來越復(fù)雜的前端項目,這一點尤為重要。,需要的朋友可以參考下

1. 為什么會有這個東西?

方便組織你的代碼,提高項目的可維護性。一個項目的可維護性高不高,也體現(xiàn)一個程序員的水平,在如今越來越復(fù)雜的前端項目,這一點尤為重要。

2. 為什么不用requirejs,seajs等

它們功能強大,但是文件體積是個問題,此外還有就是業(yè)務(wù)有時候可能沒那么復(fù)雜,正如開頭所說的:keep it simple

3. 以下的實現(xiàn)從哪里來的?

這些借鑒了requirejs,seajs,commonjs等的實現(xiàn),用于真實的項目,穩(wěn)定運行,效果不錯。

4. 適用場景

移動端頁面,將js注入到html頁面,這樣就不用考慮模塊加載的問題,從而節(jié)省了很多的代碼,在實現(xiàn)上也更為的簡單。

如果是多文件加載的話,需要手動執(zhí)行文件加載順序,那么其實最好用庫來進行依賴管理會好一點。

實現(xiàn)1

(function(global){
var modules = {};
var define = function (id,factory) {
if(!modules[id]){
modules[id] = {
id : id,
factory : factory
};
}
};
var require = function (id) {
var module = modules[id];
if(!module){
return;
}
if(!module.exports){
module.exports = {};
module.factory.call(module.exports,require,module.exports,module);
}
return module.exports;
}
global.define = define;
global.require = require;
})(this);

使用示例

define('Hello',function(require,exports,module){
function sayHello() {
console.log('hello modules');
}
module.exports = {
sayHello : sayHello
}
});
var Hello = require('Hello');
Hello.sayHello();

實現(xiàn)2

function Module(main,factory){
var modules = {};
factory(function(id,factory){
modules[id] = {
id : id,
factory : factory,
}
});
var require = function (id) {
var module = modules[id];
if(!module){
return;
}
if(!module.exports){
module.exports = {};
module.factory.call(module.exports,require,module.exports,module);
}
return module.exports;
}
window.require = require;
return require(main);
}

使用示例

Module('main',function(define){
define('Hello',function(require,exports,module){
function sayHello () {
console.log('hello');
}
//有效的寫法
module.exports = {
sayHello : syaHello;
}
//或者
exports.sayHello = sayHello;
});
//mian,程序入口
define('main',function(require,exports,module){
var Hello = require('Hello');
Hello.sayHello();
});
});

實現(xiàn)3

另外一種風(fēng)格的模塊管理

(function(global) {
var exports = {}; //存儲模塊暴露的接口
var modules = {}; // 
global.define = function (id,factory) {
modules[id] = factory;
}
global.require = function (id) {
if(exports[id])return exports[id];
else return (exports = modules[id]());
}
})(this);

使用示例

define('Hello',function(require,exports,module){
function sayHello() {
console.log('hello modules');
}
//暴露的接口
return {
sayHello : sayHello
};
});
var Hello = require('Hello');
Hello.sayHello();

實踐

有了簡易的模塊化管理之后,在項目中,我們就可以采取這樣的結(jié)構(gòu)

-- proj

-- html
-- index.html
-- css
-- js
-- common
-- module1.js(通用模塊1)
-- module2.js(通用模塊2)
-- page
-- index.js(頁面邏輯)
-- lib
-- moduler.js 模塊管理庫

配合前端構(gòu)建工具(wepack,grunt,gulp等等),就可以構(gòu)建一個移動端的頁面。

總結(jié)

如今的框架非常地多,而且越做越龐大??蚣芡ǔ?紤]通用性,對于精益求精的項目來說,可能有時候也要自己動手去實現(xiàn)一些關(guān)鍵的點,而學(xué)習(xí)的來源就是這些牛逼的框架。

相關(guān)文章

最新評論

凤山县| 中江县| 和田县| 承德市| 鲜城| 师宗县| 弋阳县| 甘南县| 太保市| 白朗县| 宁城县| 诸城市| 郑州市| 宾阳县| 正定县| 大田县| 马山县| 林周县| 昌宁县| 潼南县| 沅陵县| 祁东县| 南丹县| 孝感市| 绥化市| 南涧| 定襄县| 鄯善县| 博白县| 连江县| 唐山市| 师宗县| 新郑市| 谢通门县| 六安市| 武安市| 崇左市| 交口县| 永仁县| 福建省| 富平县|