nodeJs學習筆記 module.exports 和 exports

exports是將函數能被引用該方法的模塊引用到, 它有兩種寫法node

exports.functionName = function()   和   module.exports = function()express

例子:restful

sourse/sourseList.jsapp

var express = require('express');
var router = express.Router();
var http = require('http');
var url = require('url');
 
function getProducts1(req,res){ 
   .. 
   res.end(); 
 };

function getProducts2(req,res){
   .. 
   res.end(); 
 };  

exports.getProducts1 = getProducts1; 
exports.getProducts2 = getProducts2;

  app.js函數

var sourseList = require('./sourse/sourseList');
app.get('/sourseList1', sourseList.getProducts1 );  //指定路遊
app.get('/sourseList2', sourseList.getProducts2 );

這裏exports對設置了兩個屬性,引用該模塊的代碼就能訪問到getProducts1 、getProducts2這兩個函數工具

另外一種寫法:post

sourse/sourseList.jsui

var express = require('express');
var router = express.Router();
var http = require('http');
var url = require('url');

router.route('/').get(function(req, res) { 
  ..
  rs.end();  
}); 
 
router.route('/').post(function(req, res) { 
  ..
  rs.end();  
});
module.exports = router;

 app.jsurl

var sourseList = require('./sourse/sourseList');
app.use('/sourseList', sourseList);

這是一個restful風格的方法, app.js經過use的方式監聽了關於'/sourseList'地址的全部請求rest

經過這大約知道了兩個導出方式的不一樣,

普通的exports能夠靈活的包涵各式各樣的方法,而module.exports只能包含關於'/sourseList'的方法,

nodeJs in action書裏是這麼介紹的 「 若是隻須要從模塊中獲得一個函數,那從require中返回一個函數的代碼要比返回一個對象的代碼更優雅。」

其實最終在程序裏導出的是module.exports,exports只不過是它的一個輔助工具。 最終返回給調用的是Module.exports而不是exports。全部的exports收集到的屬性和方法,都賦值給了Module.exports。固然,這有個前提,就是Module.exports自己不具有任何屬性和方法。若是,Module.exports已經具有一些屬性和方法,那麼exports收集來的信息將被忽略。

相關文章
相關標籤/搜索