一、module
①核心模块
②第三方模块
③本地模块
1.核心模块的引入
require("http")
2.第三方模块安装引入
npm install express
require("express")
3.本地模块的创建
//创建一个js文件 module1.js,内容如下:
var name = "dqf";
module.exports.name = name;
//引用
var myModule = require('./module1');
console.log(myModule.name);
//==========其他方式==========================
module.exports.sum = function(a,b){
return (a+b);
}
var myModule = require('./module1');
console.log(myModule.sum(3,4));
//=======================================
module.exports = function(a,b){
return a+b;
}
var myModule = require('./module1');
console.log(myModule(3,4));
//=====================================
exports.sum = function(a,b){
return a+b;
}
var myModule = require('./module1.js');
console.log(myModule.sum(3+4));
//============错误方式==============================
exports = function(a,b){ return a+b; }
二、module.exports 和 exports
这里简单的介绍一下两者之间的关系
在控制台打印下:
console.log(exports);
console.log(module);
{}
Module {
id: '.',
exports: {},
parent: null,
filename: '/Users/qifuguang/nodejs/learnModule/test.js',
loaded: false,
children: [],
paths:
[ '/Users/qifuguang/nodejs/learnModule/node_modules',
'/Users/qifuguang/nodejs/node_modules',
'/Users/qifuguang/node_modules',
'/Users/node_modules',
'/node_modules' ] }
可以看到,exports={},module.exports={}。module 、exports、module.exports三者之间的关系
module 中的 exports 指向 exports,注意是指向,不是等于。
所以:
exports.sum = function(a,b){
return a+b;
}
关系图是这样的:
错误的方式
//自己的模块
exports = {
sayHello: function() {console.log('Hello world!');}
}
//引用
myModule = require('./my_module');
myModule.sayHello()
这样之后变成了这样:
这种方式,无疑也是不对的。
module.exports = 'ROCK IT!';
exports.name = function() {
console.log('My name is Lemmy Kilmister');
};
三、模块共享
在你引用模块后,这个模块就会创建一个实例,不管你引用多少次这个模块,都是用的一个实例。
例如:
var i = 1;
module.exports.log = function(){
console.log(i);
i++
}
var log1 = require('./module1.js');
log1.log(); //1
var log2 = require('./module1.js');
log2.log();//2
//console.log(log1===log2),发现是true
//说明log1和log2是同一个对象。