require 和 import 的區別?

KingJames發表於2018-05-28

require 和 import 的區別?

遵循的規範不同

1.require/exports是CommonJS的一部分

2.import/export是ES6新規範

出現時間不同

CommonJS 作為 Node.js 的規範,一直沿用至今。由於 npm 上 CommonJS 的類庫眾多,以及 CommonJS 和 ES6 之間的差異,Node.js 無法直接相容 ES6。所以現階段 require/exports 仍然是必要且是必須的。

形式不同

require/exports 的用法只有以下三種:

const fs = require('fs');
 exports.fs = fs;
 module.exports = fs;
複製程式碼

import/export的寫法就多種多樣

import fs from 'fs';
import {default as fs} from 'fs';
import * as fs from 'fs';
-----------------------------
export default fs;
export const fs;
export * from 'fs';
複製程式碼

本質上的不同

1.CommonJS還是ES6 Module 輸出都可以看成是一個具備多個屬性或者方法的物件;

2.default 是ES6 Module所獨有的關鍵字,export default 輸出預設的介面物件,import from 'fs'可直接匯入這個物件;

3.ES6 Module中匯入模組的屬性或者方法是強繫結的,包括基礎型別;而 CommonJS 則是普通的值傳遞或者引用傳遞。

相關文章