博客 / 詳情

返回

import與require區別

命令 規範 調用 本質 特點
require CommonJS規範 運行時調用 賦值過程 非語言層面的標準。 社區方案,提供了服務器/瀏覽器的模塊加載方案。只能在運行時確定模塊的依賴關係及輸入/輸出的變量,無法進行靜態優化。
import es6+的語法標準 編譯時調用 解構過程 語言規格層面支持模塊功能。支持編譯時靜態分析,便於JS引入宏和類型檢驗。動態綁定

比如分析這一段 :

import { readFile } from 'fs';

js 代碼被 JavaScript 引擎編譯時, 並將上面 fs 模塊的屬性 readFile 指向對應模塊的 export const readFile() 方法上,注意這裏只是做了指針指向,而並不是執行 fs 模塊。當執行 readFile() 時,就會去找指針指向的代碼並執行。

區分於CommonJS模塊:

let { stat, exists, readFile } = require('fs');

其實上面代碼是先執行 fs 模塊,得到一份代碼拷貝,再獲取對應的屬性或方法的。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.