初學(xué)Web前端要注意什么如何學(xué)好JS模塊化編程-創(chuàng)新互聯(lián)

初學(xué)Web前端要注意什么?如何學(xué)好JS模塊化編程?JavaScript是前端三要素之一,也是很多初學(xué)Web前端的人遭遇的第一條攔路虎。很多同學(xué)表示JavaScript涵蓋的知識點太多太復(fù)雜、應(yīng)用也是五花八門完全摸不著頭腦。但只要我們一點一點由基礎(chǔ)到進(jìn)階的學(xué)習(xí),就一定能學(xué)好JavaScript,接下來千鋒小編就給大家分享有關(guān)JavaScript模塊化編程的知識。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、鎮(zhèn)平ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的鎮(zhèn)平網(wǎng)站制作公司

初學(xué)Web前端要注意什么 如何學(xué)好JS模塊化編程

模塊是實現(xiàn)特定功能的一組方法,模塊化是一種規(guī)范、一種約束,這種約束會大大提升開發(fā)效率。JS模塊化思想是將每個JS文件看作是一個模塊,每個模塊通過固定的方式引入,并且通過固定的方式向外暴露指定的內(nèi)容。

模塊化需要實現(xiàn)的功能

1.解決命名沖突。當(dāng)代碼達(dá)到一定規(guī)模,功能很多的時,命名沖突就會出現(xiàn),模塊化可以很好的解決命名沖突的問題。

2.實現(xiàn)依賴管理。當(dāng)一個頁面要加載多個JS并且他們之際有些還有依賴關(guān)系,這時候就需要慎重仔細(xì)的排列這些JS的順序,以保證每個組件都能正常運行,而模塊化之后就不用為此多費心思。

3.提高復(fù)用性和代碼可讀性。一個功能為一個模塊,每個模塊相互獨立,互不影響,代碼組件封裝可以重復(fù)利用,去除這個模塊不影響其它的。

JavaScript模塊化發(fā)展

閉包與命名空間

這是最容易想到的也是最簡便的解決方式,早在模塊化概念提出之前很多人就已經(jīng)使用閉包的方式來解決變量重名和污染問題。這樣每個JS文件都是使用IIFE包裹的,各個JS文件分別在不同的詞法作用域中,相互隔離,最后通過閉包的方式暴露變量。每個閉包都是單獨一個文件,每個文件仍然通過script標(biāo)簽的方式下載,標(biāo)簽的順序就是模塊的依賴關(guān)系。

面向?qū)ο箝_發(fā)

這種方法只是閉包方式的小改進(jìn),約束js文件返回必須是對象,對象其實就是一些個方法和屬性的集合。這樣的優(yōu)點:1)規(guī)范化輸出,更加統(tǒng)一的便于相互依賴和引用;2)使用‘類’的方式開發(fā),便于后面的依賴進(jìn)行擴展。本質(zhì)上這種方法只是對閉包方法的規(guī)范約束,并沒有做什么根本改動。

YUI

雅虎出品的一個工具,模塊化管理只是一部分,其還具有JS壓縮、混淆、請求合并(合并資源需要server端配合)等性能優(yōu)化的工具,可謂是現(xiàn)有JS模塊化的鼻祖。通過YUI全局對象去管理不同模塊,所有模塊都只是對象上的不同屬性,相當(dāng)于是不同程序運行在操作系統(tǒng)上。

CommonJs

2009年Nodejs發(fā)布,Commonjs發(fā)布之后,就成了Node里面標(biāo)準(zhǔn)的模塊化管理工具。同時Node還推出了npm包管理工具,npm平臺上的包均滿足Commonjs規(guī)范,隨著Node與npm的發(fā)展,Commonjs影響力也越來越大,并且促進(jìn)了后面模塊化工具的發(fā)展,具有里程碑意義的模塊化工具。

AMD和RequireJS

AMD是"Asynchronous Module Definition"的縮寫,意思就是"異步模塊定義"。它采用異步方式加載模塊,模塊的加載不影響它后面語句的運行。所有依賴這個模塊的語句,都定義在一個回調(diào)函數(shù)中,等到所有依賴加載完成之后(前置依賴),這個回調(diào)函數(shù)才會運行。

RequireJs是JS模塊化的工具框架,是AMD規(guī)范的具體實現(xiàn)。但是有意思的是,RequireJs誕生之后,推廣過程中產(chǎn)生的AMD規(guī)范。RequireJs的優(yōu)點:1)動態(tài)并行加載js,依賴前置,無需再考慮js加載順序問題;2)核心還是注入變量的沙箱編譯,解決模塊化問題;3)規(guī)范化輸入輸出,使用起來方便;4)對于不滿足AMD規(guī)范的文件可以很好地兼容。

CMD和SeaJs

CMD規(guī)范由國內(nèi)(阿里)誕生,借鑒了Commonjs的規(guī)范與AMD規(guī)范,在兩者基礎(chǔ)上做了改進(jìn)。特點:1)define定義模塊、require加載模塊、exports暴露變量;2)不同于AMD的依賴前置,CMD推崇依賴就近(需要的時候再加載);3)推崇api功能單一,一個模塊干一件事。

SeaJs是CMD規(guī)范的實現(xiàn),跟RequireJs類似,CMD也是SeaJs推廣過程中誕生的規(guī)范。CMD借鑒了很多AMD和Commonjs優(yōu)點,同樣SeaJs也對AMD和Commonjs做出了很多兼容。

ES6中的模塊化

ES6規(guī)范中終于將模塊化納入JavaScript標(biāo)準(zhǔn),從此JS模塊化被官方扶正,也是未來JS的標(biāo)準(zhǔn)。ES6中的模塊化在Commonjs的基礎(chǔ)上有所不同,增加了關(guān)鍵字import、export、default、as、from,而不是全局對象。二者有兩點主要的區(qū)別:1)CommonJS模塊輸出的是一個值的拷貝,ES6模塊輸出的是值的引用;2)CommonJS模塊是運行時加載,ES6模塊是編譯時輸出接口。

想了解更多JavaScript模塊化知識點,你可以選擇專業(yè)的學(xué)習(xí)。如果你想快速從基礎(chǔ)到高階、層層遞進(jìn)的掌握前端開發(fā)人員所需的技能,可以選擇專業(yè)的學(xué)習(xí),讓你高效率學(xué)習(xí)、畢業(yè)后輕松拿高薪!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享題目:初學(xué)Web前端要注意什么如何學(xué)好JS模塊化編程-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://bm7419.com/article40/diceho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航軟件開發(fā)、網(wǎng)站設(shè)計、微信小程序域名注冊、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)