module.exports與exports和export和export default區別
阿新 • • 發佈:2021-07-15
1CommonJS規範 exports=module.exports是對外的介面require()引入該介面是
示例:
exports.timeInterval=function(){ console.log("invisible"); } require('')2模組功能主要由兩個命令構成:export
和import
。export
命令用於規定模組的對外介面,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
。