欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1. 為什么會(huì)有這個(gè)東西?

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

2. 為什么不用requirejs,seajs等

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

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

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

4. 適用場(chǎng)景

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

如果是多文件加載的話,需要手動(dòng)執(zhí)行文件加載順序,那么其實(shí)最好用庫(kù)來進(jìn)行依賴管理會(huì)好一點(diǎn)。

實(shí)現(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();

實(shí)現(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();
});
});

實(shí)現(xiàn)3

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

(function(global) {
var exports = {}; //存儲(chǔ)模塊暴露的接口
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();

實(shí)踐

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

-- proj

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

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

總結(jié)

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

相關(guān)文章

  • 利用JavaScript編寫一個(gè)簡(jiǎn)單的1024小游戲

    利用JavaScript編寫一個(gè)簡(jiǎn)單的1024小游戲

    在每年的10月24日,我們都會(huì)慶祝程序員節(jié),這是一個(gè)向所有辛勤工作、創(chuàng)造出無數(shù)令人驚嘆應(yīng)用和系統(tǒng)的程序員們致敬的日子,為了紀(jì)念這個(gè)特殊的日子,我們將通過編寫一個(gè)簡(jiǎn)單的1024小游戲來向所有程序員們表示敬意,本文將詳細(xì)解釋如何使用JavaScript編寫這個(gè)小游戲
    2023-10-10
  • 基于JavaScript代碼實(shí)現(xiàn)隨機(jī)漂浮圖片廣告

    基于JavaScript代碼實(shí)現(xiàn)隨機(jī)漂浮圖片廣告

    在網(wǎng)上有很多這樣的代碼,不過未必符合W3C標(biāo)準(zhǔn),因?yàn)樵陬^部加上<!DOCTYPE html>類似標(biāo)簽之后,漂浮效果就會(huì)失效,下面分享一個(gè)符合標(biāo)準(zhǔn)的漂浮代碼,使需要的朋友免去大量改造代碼的繁瑣
    2016-01-01
  • 詳解小程序云開發(fā)數(shù)據(jù)庫(kù)

    詳解小程序云開發(fā)數(shù)據(jù)庫(kù)

    這篇文章主要介紹了小程序云開發(fā)數(shù)據(jù)庫(kù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • setTimeout 函數(shù)在前端延遲搜索實(shí)現(xiàn)中的作用詳解

    setTimeout 函數(shù)在前端延遲搜索實(shí)現(xiàn)中的作用詳解

    這篇文章主要為大家介紹了setTimeout 函數(shù)在前端延遲搜索實(shí)現(xiàn)中的作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 基于Turn.js 實(shí)現(xiàn)翻書效果實(shí)例解析

    基于Turn.js 實(shí)現(xiàn)翻書效果實(shí)例解析

    最近項(xiàng)目經(jīng)理我個(gè)項(xiàng)目練練手,其項(xiàng)目需求是要實(shí)現(xiàn)翻書效果,看到這個(gè)需求后,我真是懵了,這咋整,我可是java出身的啊,這個(gè)問題真是難住我了,后來有同事的指導(dǎo),問題順利解決,下面小編把學(xué)習(xí)心得分享,感興趣的朋友可以參考下
    2016-06-06
  • js如何找出兩個(gè)數(shù)組中不同的元素

    js如何找出兩個(gè)數(shù)組中不同的元素

    這篇文章主要介紹了js如何找出兩個(gè)數(shù)組中不同的元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • javascript簡(jiǎn)寫常用的12個(gè)技巧(可以大大減少你的js代碼量)

    javascript簡(jiǎn)寫常用的12個(gè)技巧(可以大大減少你的js代碼量)

    這篇文章主要跟大家分享了javascript簡(jiǎn)寫常用的12個(gè)技巧,通過這12個(gè)技巧可以大大減少你的js代碼量,看懂一種是入門,全懂就是大神,你能知道幾個(gè)呢?需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)下吧。
    2017-08-08
  • JS中操作<select>標(biāo)簽選的值圖文詳解

    JS中操作<select>標(biāo)簽選的值圖文詳解

    這篇文章主要給大家介紹了關(guān)于JS中操作<select>標(biāo)簽選值的相關(guān)資料, 在HTML中,<Select>標(biāo)簽下的內(nèi)容,代表下來列表選項(xiàng),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • layui自定義驗(yàn)證,用ajax查詢后臺(tái)是否有重復(fù)數(shù)據(jù),form.verify的例子

    layui自定義驗(yàn)證,用ajax查詢后臺(tái)是否有重復(fù)數(shù)據(jù),form.verify的例子

    今天小編就為大家分享一篇layui自定義驗(yàn)證,用ajax查詢后臺(tái)是否有重復(fù)數(shù)據(jù),form.verify的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JS表格組件BootstrapTable行內(nèi)編輯解決方案x-editable

    JS表格組件BootstrapTable行內(nèi)編輯解決方案x-editable

    這篇文章主要介紹了JS組件系列BootstrapTable行內(nèi)編輯解決方案:x-editable,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評(píng)論