這篇文章主要介紹“es6 Module好處有哪些”,在日常操作中,相信很多人在es6 Module好處有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”es6 Module好處有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
10年積累的網(wǎng)站制作、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計(jì)制作后付款的網(wǎng)站建設(shè)流程,更有旬陽免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。CommonJS加載的是一個對象(module.export),該對象只有在腳本運(yùn)行完成之后才會生成,ES6不是對象,它對外的接口是一種靜態(tài)定義,在代碼靜態(tài)解析階段就會生成。
es6模塊化module和CommonJS和AMD模塊(運(yùn)行時加載)的區(qū)別
1、運(yùn)行時加載
//CommonJS模塊
let{stat,exists,readFile}=require('fs');
//等同于
let_fs=require('fs');
letstat=_fs.stat;
letexists=_fs.exists;
letreadfile=_fs.readfile;
上面代碼的實(shí)質(zhì)是整體加載fs模塊(即加載fs的所有方法),生成一個對象(_fs),然后再從這個對象上面讀取3個方法。這種加載稱為“運(yùn)行時加載”,因?yàn)橹挥羞\(yùn)行時才能得到這個對象,導(dǎo)致完全沒辦法在編譯時做“靜態(tài)優(yōu)化”。
2、ES6可以在編譯時就完成模塊加載
1
2
//ES6模塊
import{stat,exists,readFile}from'fs';
上面代碼的實(shí)質(zhì)是從fs模塊加載3個方法,其他方法不加載。這種加載稱為“編譯時加載”或者靜態(tài)加載,即ES6可以在編譯時就完成模塊加載,效率要比CommonJS模塊的加載方式高。當(dāng)然,這也導(dǎo)致了沒法引用ES6模塊本身,因?yàn)樗皇菍ο蟆?/p>
ES6模塊module的好處
1、由于ES6模塊是編譯時加載,使得靜態(tài)分析成為可能。有了它,就能進(jìn)一步拓寬JavaScript的語法,比如引入宏(macro)和類型檢驗(yàn)(typesystem)這些只能靠靜態(tài)分析實(shí)現(xiàn)的功能。
2、不再需要UMD模塊格式了,將來服務(wù)器和瀏覽器都會支持ES6模塊格式。目前,通過各種工具庫,其實(shí)已經(jīng)做到了這一點(diǎn)。
3、將來瀏覽器的新API就能用模塊格式提供,不再必須做成全局變量或者navigator對象的屬性。
4、不再需要對象作為命名空間(比如Math對象),未來這些功能可以通過模塊提供
到此,關(guān)于“es6 Module好處有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!