node程式設計中最重要的思想就是模組化,import
和require
都是被模組化所使用。
遵循規範
呼叫時間
本質
require / exports :
遵循 commonjs/amd,只能在執行時確定模組的依賴關係及輸入/輸出的變數,無法進行靜態優化。
用法只有以下三種簡單的寫法:
const fs = require('fs')
exports.fs = fs
module.exports = fs
import / export:
遵循 es6 規範,支援編譯時靜態分析,便於js引入巨集和型別檢驗。動態繫結。
寫法就比較多種多樣:
import fs from 'fs'
import from 'fs'
import * as fs from 'fs'
import from 'fs'
import from 'fs'
import fs, from 'fs'
export default fs
export const fs
export function readfile
export
export * from 'fs'
通過require引入基礎資料型別時,屬於複製該變數。
通過require引入複雜資料型別時,資料淺拷貝該物件。
出現模組之間的迴圈引用時,會輸出已經執行的模組,而未執行的模組不輸出(比較複雜)
commonjs模組預設export的是乙個物件,即使匯出的是基礎資料型別
載入方式
規範命令
特點執行時載入
commonjs/amd
require
社群方案,提供了伺服器/瀏覽器的模組載入方案。非語言層面的標準。只能在執行時確定模組的依賴關係及輸入/輸出的變數,無法進行靜態優化。
編譯時載入
esmascript6+
import
語言規格層面支援模組功能。支援編譯時靜態分析,便於js引入巨集和型別檢驗。動態繫結
import和require的區別
遵循規範 require 是 amd規範引入方式 import是es6的乙個語法標準,如果要相容瀏覽器的話必須轉化成es5的語法 呼叫時間 require是執行時呼叫,所以require理論上可以運用在 的任何地方 import是編譯時呼叫,所以必須放在檔案開頭 本質require是賦值過程,其實r...
import和require的區別
node程式設計中最重要的思想就是模組化,import和require都是被模組化所使用。遵循規範 require 是 amd規範引入方式 import是es6的乙個語法標準,如果要相容瀏覽器的話必須轉化成es5的語法呼叫時間 require是執行時呼叫,所以require理論上可以運用在 的任何地...
import 和require的區別
文章 node程式設計中最重要的思想就是模組化,import和require都是被模組化所使用。遵循規範 呼叫時間 本質require exports 遵循 commonjs amd,只能在執行時確定模組的依賴關係及輸入 輸出的變數,無法進行靜態優化。用法只有以下三種簡單的寫法 const fs r...