1. 程式人生 > >學習javascript中的require、import和export的一點總結

學習javascript中的require、import和export的一點總結

1, AMD和CMD是基於require 來實現的。

2, AMD和CMD兩者的不同在於對依賴模組的執行時機處理不同。AMD依賴前置,js可以方便知道依賴模組是誰,立即載入;CMD就近依賴,按需載入,需要使用把模組變為字串解析一遍才知道依賴了那些模組。

3, AMD和CMD兩者都是非同步載入,。

4,import模組匯入與export模組匯出功能相對應,也存在兩種模組匯入方式:命名式匯入(名稱匯入)和預設匯入(定義式匯入)。ES2015裡的新模組化規範。注意:在node中使用的是exports,不要混淆了。

5,import的語法跟require不同,而且import必須放在檔案的最開始,且前面不允許有其他邏輯程式碼,這和其他所有程式語言風格一致。

6,require的使用非常簡單,它相當於module.exports的傳送門,module.exports後面的內容是什麼,require的結果就是什麼,物件、數字、字串、函式……再把require的結果賦值給某個變數,相當於把require和module.exports進行平行空間的位置重疊。屬於CommonJS規範的一部分。

7,ES6釋出的module並沒有直接採用CommonJS,甚至連require都沒有采用,也就是說require仍然只是node的一個私有的全域性方法,module.exports也只是node私有的一個全域性變數屬性,跟標準半毛錢關係都沒有。

8,require是賦值過程,其實require的結果就是物件、數字、字串、函式等,再把require的結果賦值給某個變數

import是解構過程;

9,

require / exports :
遵循 CommonJS/AMD,只能在執行時確定模組的依賴關係及輸入/輸出的變數,無法進行靜態優化。
用法只有以下三種簡單的寫法:

const fs = require('fs')
exports.fs = fs

module.exports = fs10,

import / export:
遵循 ES6 規範,支援編譯時靜態分析,便於JS引入巨集和型別檢驗。動態繫結。
寫法就比較多種多樣:

import fs from 'fs'
import {default as fs} from 'fs'
import * as fs from 'fs'
import {readFile} from 'fs'
import {readFile as read} from 'fs'
import fs, {readFile} from 'fs'

export default fs
export const fs
export function readFile
export {readFile, read}
export * from 'fs'