测试文件.js:
/**
* Created by cherish on 2016/5/24.
* 核心模块之module分析
*
* module模块和package包是NodeJs中最重要的支柱(两者可以相互混淆,本质上没什么区别)
*
* 包是实现了某个功能模块的集合
*
* 什么是模块?
* a.模块和文件是一一对应的,一个文件就是一个模块(在NodeJS中)
*
* 例:var http=require('http');//把http模块导入项目中获取它的对象
*
* 如何创建我们自己的模块?
* 如下所示:
*/
* Created by cherish on 2016/5/24.
* 核心模块之module分析
*
* module模块和package包是NodeJs中最重要的支柱(两者可以相互混淆,本质上没什么区别)
*
* 包是实现了某个功能模块的集合
*
* 什么是模块?
* a.模块和文件是一一对应的,一个文件就是一个模块(在NodeJS中)
*
* 例:var http=require('http');//把http模块导入项目中获取它的对象
*
* 如何创建我们自己的模块?
* 如下所示:
*/
//myMD和myMD1实际上指的是同一个实例,第一次发现没加载过,会重新创建一个
//但第二次发现加载过了,不会再创建另外一个实例,而是创建一个拷贝出来,那么就会 发现它们指向一个实例
var myMD=require('./MyModule');
myMD.setName("flower");
var myMD1=require('./MyModule');
myMD1.setName("cherish");
myMD.sayHello();
//但第二次发现加载过了,不会再创建另外一个实例,而是创建一个拷贝出来,那么就会 发现它们指向一个实例
var myMD=require('./MyModule');
myMD.setName("flower");
var myMD1=require('./MyModule');
myMD1.setName("cherish");
myMD.sayHello();
var myMD2=require("./MyModule01");
var hello=new myMD2();
hello.setName("flower");
hello.sayHello();
var hello=new myMD2();
hello.setName("flower");
hello.sayHello();
MyModule.js:
/**
* Created by cherish on 2016/5/24.
* 建一个我们自己的模块
*/
* Created by cherish on 2016/5/24.
* 建一个我们自己的模块
*/
var name;
exports.setName=function(theName){
name=theName;
};
exports.setName=function(theName){
name=theName;
};
exports.sayHello=function(){
console.log("hello-----------"+name);
};
console.log("hello-----------"+name);
};
MyModule01.js:
/**
* Created by cherish on 2016/5/24.
* 模块另一种写法
*/
* Created by cherish on 2016/5/24.
* 模块另一种写法
*/
function Hello(){
var name;
this.setName=function(theName){
name=theName;
}
this.sayHello=function(){
console.log(name+"---------------good afternoon");
}
}
console.log(name+"---------------good afternoon");
}
}
//导出一个Hello的API给人使用,但是有时候点Hello比较麻烦
//xports.Hello=Hello;
//xports.Hello=Hello;
//通常这样用,exports是module.exports的引用
module.exports=Hello;
module.exports=Hello;