一、export 導出
export default 是默認導出
export const 是命名導出
module.exports與exports,export與export default之間的關系和區別
Node應用由模塊組成,采用CommonJS模塊規范。
根據這個規范,每個文件就是一個模塊,有自己的作用域。在一個文件里面定義的變量、函數、類,都是私有的,對其他文件不可見。
CommonJS規范規定,每個模塊內部,module變量代表當前模塊。這個變量是一個對象,它的exports屬性(即module.exports)是對外的接口。加載某個模塊,其實是加載該模塊的module.exports屬性。
var x = 5;
var addX = function (value) {
return value + x;
};
module.exports.x = x;
module.exports.addX = addX;
require方法用於加載模塊。
var example = require('./example.js');
console.log(example.x); // 5
console.log(example.addX(1)); // 6
exports 與 module.exports
為了方便,Node為每個模塊提供一個exports變量,指向module.exports。這等同在每個模塊頭部,有一行這樣的命令。
var exports = module.exports;
ES6模塊規范
不同於CommonJS,ES6使用 export 和 import 來導出、導入模塊。
// profile.js
var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;
export {firstName, lastName, year};
二、import ... form...替代 require()
基本導入導出
// 不接收對象
require:require('s.css'); //(es5)
improt 's.css' //(es6)
// 接收對象
var o = require('s.js'); //es(5)
import o form s.js //(es6)
對象的寫法:
// 導出一個模塊對象(es5):
module.exports={
add:add,
sub:sub
}
// 導出一個模塊對象(es6):
module.exports={
add,
sub
}
// 注意:上es6這種寫法屬性名和屬性值變量是同一個,否則要分開寫
module.exprots={
addFn:add,
sub
}
一個對象中方法的寫法:
// es5
module.exports={
addFun:function(x,y){
return x+y;
}
}
// es6
module.exports={
addFun(x,y){
return x+y;
}
}
導出對象
calc.js中有兩個函數:
function add(){}
function sub(){}
//寫法一
es5寫法:
module.exports.add = add;
module.exports.sub = sub;
es6寫法:
exprot function add(){}
exprot function sub(){}
使用:
var calc = require('./calc.js');
//寫法二
es5:
module.exports = {add:add,sub:sub};
es6:
exprot default{
add,sub
}
//表示取得calc.js中所有暴露出來的對象(es6)
import calc from './calc.js'
//只獲取到calc.js中的add方法(按需獲取)
import {add} from './calc.js'
用export 和import 的寫法注意點
1、如果模塊中使用 export default {}
只能通過 import 對象名稱 from '模塊路徑'
不能通過 import {對象名稱} from '模塊路徑'
2、如果使用 import {對象名稱} from '模塊路徑' 導出具體某個對象或者方法名稱
需要單獨導出對象或者方法:
export function add(){}
export function sub(){}
使用:
import {add, sub} from '模塊路徑'
直接使用 add,sub方法
注意:不能直接使用 import 對象名稱 from '模塊路徑'
export default 和 export 區別
1、export與export default均可用於導出常量、函數、文件、模塊等
2、你可以在其它文件或模塊中通過import+(常量 | 函數 | 文件 | 模塊)名的方式,將其導入,以便能夠對其進行使用
3、在一個文件或模塊中,export、import可以有多個,export default僅有一個
4、通過export方式導出,在導入時要加{ },export default則不需要
