码迷,mamicode.com
首页 > Web开发 > 详细

nodeJs学习笔记 module.exports 和 exports

时间:2015-01-04 19:49:02      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

exports是将函数能被引用该方法的模块引用到, 它有两种写法

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

例子:

sourse/sourseList.js

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这两个函数

另一种写法:

sourse/sourseList.js

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.js

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

这是一个restful风格的方法, app.js通过use的方式监听了关于‘/sourseList‘地址的所有请求

通过这大约知道了两个导出方式的不同,

普通的exports可以灵活的包涵各式各样的方法,而module.exports只能包含关于‘/sourseList‘的方法,

nodeJs in action书里是这么介绍的 “ 如果只需要从模块中得到一个函数,那从require中返回一个函数的代码要比返回一个对象的代码更优雅。”

其实最终在程序里导出的是module.exports,exports只不过是它的一个辅助工具。 最终返回给调用的是Module.exports而不是exports。所有的exports收集到的属性和方法,都赋值给了Module.exports。当然,这有个前提,就是Module.exports本身不具备任何属性和方法。如果,Module.exports已经具备一些属性和方法,那么exports收集来的信息将被忽略。

nodeJs学习笔记 module.exports 和 exports

标签:

原文地址:http://my.oschina.net/u/2272916/blog/363608

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!