import和require的區別

2021-10-05 01:33:14 字數 1074 閱讀 5153

遵循規範

呼叫時間

本質

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的區別

node程式設計中最重要的思想就是模組化,import和require都是被模組化所使用。遵循規範 呼叫時間 本質 require exports 遵循 commonjs amd,只能在執行時確定模組的依賴關係及輸入 輸出的變數,無法進行靜態優化。用法只有以下三種簡單的寫法 const fs req...

import和require的區別

遵循規範 require 是 amd規範引入方式 import是es6的乙個語法標準,如果要相容瀏覽器的話必須轉化成es5的語法 呼叫時間 require是執行時呼叫,所以require理論上可以運用在 的任何地方 import是編譯時呼叫,所以必須放在檔案開頭 本質require是賦值過程,其實r...

import和require的區別

node程式設計中最重要的思想就是模組化,import和require都是被模組化所使用。遵循規範 require 是 amd規範引入方式 import是es6的乙個語法標準,如果要相容瀏覽器的話必須轉化成es5的語法呼叫時間 require是執行時呼叫,所以require理論上可以運用在 的任何地...