1. 程式人生 > 其它 >module.exports與exports和export和export default區別

module.exports與exports和export和export default區別

1CommonJS規範 exports=module.exports是對外的介面require()引入該介面是

示例:

  exports.timeInterval=function(){   console.log("invisible");   }   require('')

2模組功能主要由兩個命令構成:exportimportexport命令用於規定模組的對外介面,import命令用於輸入其他模組提供的功能。

示例一   
export function area(radius) { return Math.PI * radius * radius; } export function circumference(radius) { return 2 * Math.PI * radius; }

import { area, circumference } from './circle';或者
import * as circle from './circle';
示例二
export default命令,為模組指定預設輸出。
// export-default.js

export default function () {
  console.log('foo');
}

// import-default.js
import customName from './export-default';
customName(); // 'foo'

示例三
// 第一組
export default function crc32() { // 輸出
  // ...
}

import crc32 from 'crc32'; // 輸入

// 第二組
export function crc32() { // 輸出
  // ...
};

import {crc32} from 'crc32'; // 輸入

上面程式碼的兩組寫法,第一組是使用export default時,對應的import語句不需要使用大括號;第二組是不使用export default時,對應的import語句需要使用大括號。

export default命令用於指定模組的預設輸出。顯然,一個模組只能有一個預設輸出,因此export default命令只能使用一次。所以,import命令後面才不用加大括號,因為只可能唯一對應export default命令。

本質上,export default就是輸出一個叫做default的變數或方法,然後系統允許你為它取任意名字。

正是因為export default命令其實只是輸出一個叫做default

的變數,所以它後面不能跟變數宣告語句。


// 正確
export var a = 1;

// 正確
var a = 1;
export default a;

// 錯誤
export default var a = 1;

上面程式碼中,export default a的含義是將變數a的值賦給變數default。所以,最後一種寫法會報錯。

同樣地,因為export default命令的本質是將後面的值,賦給default變數,所以可以直接將一個值寫在export default之後。

// 正確
export default 42;

// 報錯
export 42;
上面程式碼中,後一句報錯是因為沒有指定對外的介面,而前一句指定對外介面為default