成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

模塊化

?xiaoxiao, / 2876人閱讀

摘要:模塊化總結(jié)最近重新復習的模塊化的相關(guān)知識,總結(jié)一下,僅供自己理解和大家參考。模塊化的優(yōu)點可維護性根據(jù)定義,每個模塊都是獨立的。良好設計的模塊會盡量與外部的代碼撇清關(guān)系,以便于獨立對其進行改進和維護。

模塊化總結(jié)

最近重新復習的模塊化的相關(guān)知識,總結(jié)一下,僅供自己理解和大家參考。

模塊化的優(yōu)點

可維護性:根據(jù)定義,每個模塊都是獨立的。良好設計的模塊會盡量與外部的代碼撇清關(guān)系,以便于獨立對其進行改進和維護。維護一個獨立的模塊比起一團凌亂的代碼來說要輕松很多。

命名空間:在JavaScript中,最高級別的函數(shù)外定義的變量都是全局變量(這意味著所有人都可以訪問到它們)。也正因如此,當一些無關(guān)的代碼碰巧使用到同名變量的時候,我們就會遇到“命名空間污染”的問題。

模塊化規(guī)范

現(xiàn)在比較流行的模塊化規(guī)范主要有commomJS,AMD, CMD ,ES6 ,現(xiàn)在逐一說明一下.

commonJS

commonJS 是服務器端的模塊化規(guī)范,node.js就是參照commonJS規(guī)范實現(xiàn)的。commonJS中有一個全局的方法require() 用來加載模塊。

function myModule(){
    this.hello = function(){
        return "hello";
    }
    this.goodbye = function(){
        return "gooodbye!";
    }
}
module.exports = myModile;

其實module變量代表當前模塊.

這樣就可以在其他模塊中使用這個模塊

var myModule = require("myModule");

var myModuleInstance = new myModule();
myModuleInstance.hello();
myModuleInstance.goodbye();

關(guān)于commonJS的更多,見CommonJS規(guī)范

AMD

commonJS 定義模塊的方式和引入模塊的方式還是比較簡單的,但不適合瀏覽器端,因為commonJS是同步加載的。而AMD是異步加載的,下面我們來說說AMD的書寫規(guī)范。

通過define()來定義模塊

//main.js
define(["mylib"],function(mylib){
    function foo(){
        mylib.doSomething();
    }
    return {
        foo:foo;
    }
})

define的第一個參數(shù)是依賴的模塊,必須是一個數(shù)組。通過return來暴露接口。

通過require()來加載模塊,模塊的名字默認為模塊加載器請求的指定腳本的名字。

require(["main"],function(main){
    alert(main.foo());
})

require.js就是根據(jù)AMD規(guī)范實現(xiàn)的,優(yōu)點為:

實現(xiàn)js文件的異步加載,避免網(wǎng)頁失去響應;

管理模塊之間的依賴性,便于代碼的編寫和維護。

CMD

CMD是國內(nèi)玉伯大神在開發(fā)SeaJS的時候提出來的,也是異步模塊定義。
CMDAMD的區(qū)別:
CMD相當于按需加載,定義一個模塊的時候不需要立即制定依賴模塊,在需要的時候require就可以了,比較方便;而AMD則相反,定義模塊的時候需要制定依賴模塊,并以形參的方式引入回調(diào)函數(shù)中。

// CMD
define(function(require, exports, module) {
var a = require("./a")
a.doSomething()
// 此處略去 100 行
var b = require("./b") // 依賴可以就近書寫
b.doSomething()
// ... 
})
 // AMD 默認推薦的是
define(["./a", "./b"], function(a, b) { // 依賴必須一開始就寫好
a.doSomething()
// 此處略去 100 行
b.doSomething()
...
}) 

關(guān)于 require.jssea.js 的區(qū)別詳見SeaJS與RequireJS最大的區(qū)別

ES6

ES6在語言規(guī)格的層面上,實現(xiàn)了模塊功能,而且實現(xiàn)得相當簡單,完全可以取代現(xiàn)有的CommonJSAMD規(guī)范,成為瀏覽器和服務器通用的模塊解決方案。

ES6模塊主要有兩個功能:exportimport

export用于對外輸出本模塊(一個文件可以理解為一個模塊)變量的接口

import用于在一個模塊中加載另一個含有export接口的模塊。

// a.js 

var sex="boy";
var echo=function(value){
  console.log(value)
}
export {sex,echo}  
// b.js
//通過import獲取a.js文件的內(nèi)部變量,{}括號內(nèi)的變量來自于a.js文件export出的變量標識符。
import {sex,echo} from "./a.js" 
console.log(sex)   // boy
echo(sex) // boy

各種模塊化方案優(yōu)缺點對比

模塊化方案 優(yōu)點 缺點
commonJS 復用性強 ,使用簡單 ,實現(xiàn)簡單
有不少可以拿來即用的模塊,生態(tài)不錯
同步加載不適合瀏覽器
瀏覽器的請求都是異步加載
不能并行加載多個模塊。
AMD 異步加載適合瀏覽器
可并行加載多個模塊
模塊定義方式不優(yōu)雅,不符合標準模塊化
ES6 可靜態(tài)分析,提前編譯
面向未來的標準
瀏覽器原生兼容性差,所以一般都編譯成ES5
目前可以拿來即用的模塊少,生態(tài)差

對比學習,效果更好哦~~~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83843.html

相關(guān)文章

  • 精讀《js 塊化發(fā)展》

    摘要:我是這一期的主持人黃子毅本期精讀的文章是。模塊化需要保證全局變量盡量干凈,目前為止的模塊化方案都沒有很好的做到這一點。精讀本次提出獨到觀點的同學有流形,黃子毅,蘇里約,,楊森,淡蒼,留影,精讀由此歸納。 這次是前端精讀期刊與大家第一次正式碰面,我們每周會精讀并分析若干篇精品好文,試圖討論出結(jié)論性觀點。沒錯,我們試圖通過觀點的碰撞,爭做無主觀精品好文的意見領(lǐng)袖。 我是這一期的主持人 ——...

    Freelander 評論0 收藏0
  • 《Java應用架構(gòu)設計:塊化模式與OSGi》讀書筆記

    摘要:本書概括以軟件系統(tǒng)為例,重點講解了應用架構(gòu)中的物理設計問題,即如何將軟件系統(tǒng)拆分為模塊化系統(tǒng)。容器獨立模塊不依賴于具體容器,采用輕量級容器,如獨立部署模塊可獨立部署可用性模式發(fā)布接口暴露外部配置使用獨立的配置文件用于不同的上下文。 本文為讀書筆記,對書中內(nèi)容進行重點概括,并將書中的模塊化結(jié)合微服務、Java9 Jigsaw談談理解。 本書概括 以Java軟件系統(tǒng)為例,重點講解了應用架構(gòu)...

    seanHai 評論0 收藏0
  • 前端塊化開發(fā)

    摘要:來源于阿賢博客模塊化今天給大家寫一篇關(guān)于前端模塊化開發(fā)知識點。前端模塊化開發(fā)那點歷史模塊化是指在解決某個復雜混雜問題時,依照一種分類的思維把問題進行系統(tǒng)性的分解以之處理。 來源于:阿賢博客 javascript模塊化 今天給大家寫一篇關(guān)于前端模塊化開發(fā)知識點。 前端模塊化開發(fā)那點歷史 模塊化: 是指在解決某個復雜、混雜問題時,依照一種分類的思維把問題進行系統(tǒng)性的分解以之處理。模塊...

    tianhang 評論0 收藏0
  • 低成本易管理 塊化數(shù)據(jù)中心的好處竟然這么多

    摘要:模塊化數(shù)據(jù)中心供應商聲稱他們的預制可重復的解決方案解決了這個問題,因為他們可以迅速支持增加負載和業(yè)務需求。施耐德電氣日前為他們的模塊化數(shù)據(jù)中心產(chǎn)品線發(fā)布了款不同的參考設計。對于IT技術(shù)的發(fā)展,或許有很多技術(shù)帶來的是管理模式上的改變,有些帶來的是直接效率的提升,模塊化這個概念就是如此,模塊化近幾年不光被應用在了很多硬件產(chǎn)品上,對于數(shù)據(jù)中心來說,模塊化的應用所帶來的是數(shù)據(jù)中心產(chǎn)業(yè)質(zhì)的飛躍。其實模...

    tigerZH 評論0 收藏0
  • 探索塊化數(shù)據(jù)中心之路

    摘要:一類是集裝箱數(shù)據(jù)中心,這個模塊化數(shù)據(jù)中心是將所有的風火水電布線全在一個標準貨柜內(nèi)部完成,形成一個可以移動的數(shù)據(jù)中心,本來集裝箱數(shù)據(jù)中心主要用于臨時搭建的環(huán)境,但正好符合模塊化設計理念,被數(shù)據(jù)中心引入進來,在一些大型數(shù)據(jù)中心里有部署。數(shù)據(jù)中心引入模塊化設計,目的也一樣,要實現(xiàn)數(shù)據(jù)中心業(yè)務快速部署、應用靈活,提供標準化接口,主要有三類應用。模塊化指的是解決一個復雜問題時,自頂向下逐層把系統(tǒng)劃分成...

    Kross 評論0 收藏0
  • 前端工程師必備:前端的塊化

    摘要:規(guī)范則是非同步加載模塊,允許指定回調(diào)函數(shù),可以實現(xiàn)異步加載依賴模塊,并且會提前加載由于主要用于服務器編程,模塊文件一般都已經(jīng)存在于本地硬盤,所以加載起來比較快,不用考慮非同步加載的方式,所以規(guī)范比較適用。 JS模塊化 模塊化的理解 什么是模塊? 將一個復雜的程序依據(jù)一定的規(guī)則(規(guī)范)封裝成幾個塊(文件), 并進行組合在一起; 塊的內(nèi)部數(shù)據(jù)/實現(xiàn)是私有的, 只是向外部暴露一些接口(...

    Render 評論0 收藏0

發(fā)表評論

0條評論

?xiaoxiao,

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<