common.js 與 Amd es6 import的區(qū)別

以前,我們的javascript是沒有模塊化的晒骇,通常一個頁面引對應的js, 如index.html引入index.js來實現(xiàn)1主頁的輪播圖掐暮,點擊跳轉(zhuǎn)等功能涂佃,就那樣一個功能一個功能寫了下來,無法將一個大程序拆分成一個一個小模塊灵莲,后來js壯大了雕凹,也復雜了,社區(qū)首先推出了用于服務器端的common.js和用戶瀏覽器環(huán)境的amd政冻,再后來es6在語言層面枚抵,自己實現(xiàn)了模塊化加載方案,我們主要看看他們的區(qū)別

ES6 模塊的設(shè)計思想是盡量的靜態(tài)化赠幕,使得編譯時就能確定模塊的依賴關(guān)系俄精,以及輸入和輸出的變量。CommonJS 和 AMD 模塊榕堰,都只能在運行時確定這些東西竖慧。比如,CommonJS 模塊就是對象逆屡,輸入時必須查找對象屬性圾旨。

let {a , b ,c } = require('fs') 相當于 let _fs = require('fs') let a = _fs.a

1 common.js與amd實際上是先整體加載fs模塊,即加載fs模塊下的所有方法魏蔗,生成一個對象_fs砍的,再從這個對象身上加載其他然后再從這個對象上面讀取 3 個方法。這種加載稱為“運行時加載”莺治,因為只有運行時才能得到這個對象廓鞠,導致完全沒辦法在編譯時做“靜態(tài)優(yōu)化”帚稠。

ES6 模塊不是對象,而是通過export命令顯式指定輸出的代碼床佳,再通過import命令輸入滋早。

// ES6模塊
import { stat, exists, readFile } from 'fs';
上面代碼的實質(zhì)是從fs模塊加載 3 個方法,其他方法不加載砌们。這種加載稱為“編譯時加載”或者靜態(tài)加載杆麸,即 ES6 可以在編譯時就完成模塊加載,效率要比 CommonJS 模塊的加載方式高浪感。當然昔头,這也導致了沒法引用 ES6 模塊本身,因為它不是對象影兽。

由于 ES6 模塊是編譯時加載揭斧,使得靜態(tài)分析成為可能。有了它赢笨,就能進一步拓寬 JavaScript 的語法未蝌,比如引入宏(macro)和類型檢驗(type system)這些只能靠靜態(tài)分析實現(xiàn)的功能。

除了靜態(tài)加載帶來的各種好處茧妒,ES6 模塊還有以下好處。

不再需要UMD模塊格式了左冬,將來服務器和瀏覽器都會支持 ES6 模塊格式桐筏。目前,通過各種工具庫拇砰,其實已經(jīng)做到了這一點梅忌。
將來瀏覽器的新 API 就能用模塊格式提供,不再必須做成全局變量或者navigator對象的屬性除破。 不再需要對象作為命名空間(比如Math對象)牧氮,未來這些功能可以通過模塊提供。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瑰枫,一起剝皮案震驚了整個濱河市踱葛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌光坝,老刑警劉巖尸诽,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盯另,居然都是意外死亡性含,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門鸳惯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來商蕴,“玉大人叠萍,你說我怎么就攤上這事⌒魃蹋” “怎么了俭令?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長部宿。 經(jīng)常有香客問我抄腔,道長,這世上最難降的妖魔是什么理张? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任赫蛇,我火速辦了婚禮,結(jié)果婚禮上雾叭,老公的妹妹穿的比我還像新娘悟耘。我一直安慰自己,他們只是感情好织狐,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布暂幼。 她就那樣靜靜地躺著,像睡著了一般移迫。 火紅的嫁衣襯著肌膚如雪旺嬉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天厨埋,我揣著相機與錄音邪媳,去河邊找鬼。 笑死荡陷,一個胖子當著我的面吹牛雨效,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播废赞,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼徽龟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了唉地?” 一聲冷哼從身側(cè)響起据悔,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渣蜗,沒想到半個月后屠尊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡耕拷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年讼昆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡浸赫,死狀恐怖闰围,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情既峡,我是刑警寧澤羡榴,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站运敢,受9級特大地震影響校仑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜传惠,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一迄沫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卦方,春花似錦羊瘩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浇坐,卻和暖如春睬捶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吗跋。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工侧戴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人跌宛。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像积仗,于是被迫代替她去往敵國和親疆拘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容