1.我们可以把公共的功能 抽离成为一个单独的 js 文件 作为一个模块,默认情况下面这个模块里面的方法或者属性,外面是没法访问的。如果要让外部可以访问模块里面的方法或者属性,就必须在模块里面通过 exports 或者 module.exports 暴露属性或者方法。
2.在需要使用这些模块的文件中,通过 require 的方式引入这个模块。这个时候就可以使用模块里面暴露的属性和方法。
项目结构:
在 commonjs01.js 中引用模块
/*
1.我们可以把公共的功能 抽离成为一个单独的 js 文件 作为一个模块,默认情况下面这
个模块里面的方法或者属性,外面是没法访问的。如果要让外部可以访问模块里面的方法或
者属性,就必须在模块里面通过 exports 或者 module.exports 暴露属性或者方法。
2. 在需要使用这些模块的文件中,通过 require 的方式引入这个模块。这个时候就可以
使用模块里面暴露的属性和方法。
* */
// 引入系统默认的模块
var http=require('http');
// 引入自己的定义的模块(文件),在父级目录下
// 后缀名,加不加都行
var tools=require('../tools');
// 引入自己定义的模块(文件),在同一级目录下
var gongju = require('./gongju');
// 引入自己定义的模块(文件),在下一级目录下
var bar=require('./bar/bar');
// 引入自己定义的模块(文件),在 package.json 中去找
// 简单的说就是从 package.json 中去找
// nav文件加下的
// package.json 中 "name": "nav" 文件夹, "main": "index.js",入口
var nav=require('nav');
// 调用 nav 目录下的 index.js中的方法
console.log(nav.str);
// 调用 tools 中的方法
console.log(tools.add(1,2));
console.log(tools.sayHello());
// 调用bar中的方法
console.log(bar.str)
var app=http.createServer(function(req,res){
res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});
res.write('你好 nodejs');
res.end();
})
app.listen(3000,'127.0.0.1');
在tools.js中 , 暴露模块,供别的地方调用
/**
* Created by Administrator on 2017/5/8 0008.
*/
var tools={
add:function(x,y){
return x+y;
},
sayHello:function(){
return '你好 nodejs'
}
}
// 暴露模块,供别处引用
module.exports=tools;
//exports.tools=tools;
源码下载: