1、module.exports
module變量代表當前模塊。這個變量是一個對象,module對象會創建一個叫exports的屬性,這個屬性的默認值是一個空的對象:
module.exports = {};
例子:app.js
module.exports.Name="我是電腦"; module.exports.Say=function(){ console.log("我可以干任何事情"); } //上邊這段代碼就相當於一個對象 { "Name":" 我是電腦", "Say" :function(){ console.log("我可以干任何事情"); } }
require方法用於加載模塊。
var req=require("./app.js"); req.Name //這個值是 "我是電腦" req.Say() //這個是直接調用Say方法,打印出來 "我可以干任何事情"
2、exports 與 module.exports的關系
Node為每個模塊提供一個exports變量,指向module.exports。可以通俗的理解為:
var exports = module.exports; //兩個是相等的關系,但又不是絕對相當的關系 例如: 1.module.exports可以直接導出一個匿名函數或者一個值 module.exports=function(){ var a="Hello World" return a; } 但是exports是不可以的,因為這樣等於切斷了exports與module.exports的聯系。 exports=function(){ //這樣寫法是錯誤的 var a="Hello World" //這樣寫法是錯誤的 return a; //這樣寫法是錯誤的 } //這樣寫法是錯誤的
3、export和export default的區別
export是es6引出的語法,用於導出模塊中的變量,對象,函數,類。對應的導入關鍵字是import。
二者的區別有以下幾點:
- export default在一個模塊中只能有一個,當然也可以沒有。export在一個模塊中可以有多個。
- export default的對象、變量、函數、類,可以沒有名字。export的必須有名字。
- export default對應的import和export有所區別
1.export寫法
//./aap.js var name="我是電腦"; var say=function(){ console.log("我可以干很多事"); }
export {name,say};
//也可以直接一個一個的export但是必須得有名字
export const a=1;
export function data(){
return data;
}
//其他頁面引入時必須這樣
import {name,say} from "./app.js"
2.export default
//app.js
//可以沒有函數名字
export default function(){
return data;
}
//這里export不能這樣導出
export default const a=12;
//應該這樣導出
const a=12;
export default a
//其他頁面引入時必須這樣
import data from "./app.js"
總結:可以看到用export default
,import
語句不需要使用大括號;用export
,對應的import
語句需要使用大括號,一個模塊只能有一個默認輸出,所以export default
只能使用一次。