nodejs -- require , exports , module

时间:2024-01-03 16:43:08

1. require , exports .

nodejs -- require , exports , module

--------------------------

nodejs -- require , exports , module

文件:

1) index.js

 //两种方式都可以:
var forExports = require("./forExports");
// var forExports = require("./forExports.js");
var forExports2 = require("./forExports2.js"); //下面两种方式都可以:
// var data = require("./data.json");
var data = require("./data"); forExports.say("tom", "i want to eat beef"); forExports2.say("lucy", "i want to shop"); console.log(data);

2)data.json

 {
"name": "BeJson",
"url": "http://www.bejson.com",
"page": 88,
"isNonProfit": true,
"address": {
"street": "科技园路.",
"city": "江苏苏州",
"country": "中国"
},
"links": [
{
"name": "Google",
"url": "http://www.google.com"
},
{
"name": "Baidu",
"url": "http://www.baidu.com"
},
{
"name": "SoSo",
"url": "http://www.SoSo.com"
}
]
}

3)forExports.js

 function say(who, what){
console.log(who + " 说: " + what+ "! [ from forExports.js ]");
} exports.say = say;

4)forExports2.js

 exports.say = function(who, what){
console.log(who + " 说: " + what+ "! [from forExports2.js]");
};

运行:

nodejs -- require , exports , module

----------------------

分析:

  第一: 两个模块 都有 方法say.    并且 say 方法 都 赋值给了 本模块的导出对象 .(这两个导出对象是不影响的)

    nodejs -- require , exports , module

  

  第二: require引入 模块的时候,后缀可以省略 .   ./data.json  和 ./data 都可以.

    nodejs -- require , exports , module

   

  第三: exports导出对象 赋予的是一个方法.

  

  下载文件: 密码: hu3a

2. module

nodejs -- require , exports , module

1)上面虽然被替换成一个函数, 但是 仍然可以构造函数使用 . 此时实例化 ,可以输出  hello world.

2)可以当做 普通函数进行使用

------------------------------------------------

代码:

1. index.js

 /**********require,exports的使用*************/

 //两种方式都可以:
// var forExports = require("./forExports");
// // var forExports = require("./forExports.js");
// var forExports2 = require("./forExports2.js"); //下面两种方式都可以:
// var data = require("./data.json");
// var data = require("./data"); // forExports.say("tom", "i want to eat beef"); // forExports2.say("lucy", "i want to shop"); // console.log(data); /***********module使用:***************/ //1-: 实名的构造函数
var Person = require('./forModule.js');
var lucy = new Person("lucy", 23, "shopping");
console.log(lucy);
lucy.like(); //2-: 匿名的构造函数
var Person2 = require("./forModule2.js");
var liming = new Person2("liming", 20, "football");
liming.like(); //3-: 一个普通的函数, 但是也是当做构造函数,必须实例化,才有输出:
var Person3 = require("./forModule3.js");
var jim = new Person3("jim", 16, "swimming"); //4-: 一个普通的函数, 当做普通函数:
var Person4 = require("./forModule3.js");
//调用函数:
Person4("Jack", 30, "cooking");

2. forModule.js  : 有名字的构造函数

 function Person (name, age, action) {
this.name = name;
this.age = age;
this.like = function(){
console.log(name+ ",年龄:"+age+";喜欢[" +action+ "]");
};
} module.exports = Person;

3. forModule2.js 匿名的构造函数:

 module.exports = function(name, age, action) {
this.name = name;
this.age = age;
this.like = function(){
console.log(name+ ",年龄:"+age+";喜欢[" +action+ "]");
};
};

4. forModule3.js 一个普通的函数, 但是仍然 当做是 构造函数使用. 或者 当做普通函数使用.

 module.exports = function(name, age, action) {
console.log(name+ ",年龄:"+age+";喜欢[" +action+ "]");
};

--------------------------------

运行:

nodejs -- require , exports , module

-------------------------------------

分析:

对于 forModule3.js ,

1)尽管只是一个普通函数:

 module.exports = function(name, age, action) {
console.log(name+ ",年龄:"+age+";喜欢[" +action+ "]");
};

但是,仍然是当做构造函数, 进行 实例化 ,才会有输出:

 //3-: 一个普通的函数, 但是也是当做构造函数,必须实例化,才有输出:
var Person3 = require("./forModule3.js");
var jim = new Person3("jim", 16, "swimming");

控制台输出:

nodejs -- require , exports , module

2)当做一个普通的函数. 此时 require引入的就是一个函数.

 //4-: 一个普通的函数, 当做普通函数:
var Person4 = require("./forModule3.js");
//调用函数:
Person4("Jack", 30, "cooking");

控制台输出:

nodejs -- require , exports , module

---------------------------------

参考链接:

      代码下载: 密码: tdjv