exports和module.exports的用法與區別NodeJS?

Nodejs使用模組化工具管理的原理,每個獨立的js檔案都可以看做是一個模組,每個模組中都隱含著exports和和module.exports兩個物件,下邊說一下個人在學習中隊這其的理解

工具/原料

node.js

exports的用法說明

首先,舉個例子,編寫一個exports_test.js模組,程式碼如下:

var name="我是var宣告的name變數";exports.name="我是exports下的屬性name";function sayName(){ console.log("我是function 宣告的sayName()方法!");}exports.sayName1=function(){ console.log("我是exports下的一個方法!");};

然後新建一個test.js,將上面的模組引入:

var exports_test=require('./exports_test.js');

console.log(exports_test);//輸出

執行test.js後,可以看到輸出的結果如圖

{ name: '我是exports下的屬性name', sayName1: [Function] }

exports和module.exports的用法與區別NodeJS

由以上可以看出,任何exports屬性和方法都可以再外部訪問,而var宣告和funciton直接定義方法都是私有的,只有在exports暴露後才是共有的。外部才可以通過exports_test.name型別獲取,如下

console.log(exports_test.name);console.log(exports_test.sayName1());

exports和module.exports的用法與區別NodeJS

module.exports說明

module.exports也可以像exports的用法那樣,可以替代exports的用處。module.exports包含exports,反過來exports不能替代module.exports。

module.exports和exports區別

module.exports可以單獨的定義,返回資料型別,而export只能是返回一個object物件。如

module.exports=['勞黑炭','','module.exports'];//正確

exports=['勞黑炭','','module.exports'];//報錯

exports和module.exports的用法與區別NodeJS

相關問題答案