文章目录
1、新模块count.js,输出数组
2、app.js模块调用count.js模块
3、模块之更多内容之间的调用
4、多种写法演示
(1)count.js模块中module.exports 暴露内容写法演示
(2)app.js模块中require请求内容写法演示
5、有的内容不暴露
上一篇文章我们介绍了nodejs的回调函数 Node.js后端开发 - 基础篇 #3 回调函数,这篇文章我们继续介绍nodejs相关知识点——nodejs的模块,废话不多说,下面我们来看看nodejs的模块是怎样的?
1、新模块count.js,输出数组
一个大项目那肯定是分成一个个模块的,一般来说一个文件就是一个模块,我们在原有的项目中再创建一个文件count.js,
然后在里面添加代码,代码示例如下:
var counteFlag = function(arr) {
return "有"+ arr.length + "个元素在数组中";
}
console.log(counteFlag(["java", "android", "nodejs"]));
我们来看一下输出结果:
bogon:hello-nodejs luminal$ node count
有3个元素在数组中
bogon:hello-nodejs luminal$
2、app.js模块调用count.js模块
那我们现在怎么在 app.js 里面来使用 count.js 这个模块呢?
count.js我们需要在里面这么写,如下:
var countFlag = function(arr) {
return "有"+ arr.length + "个元素在数组中";
}
//console.log(countFlag(["java", "android", "nodejs"]));
//modules.exports意思是指定要暴露的内容。
//这里暴露的是counter表达式函数
module.exports = countFlag;
app.js我们需要在里面这么写,进行调用,如下:
// './count' 其中这个点代表当前目录,不用写点js
//另外需要注意的是它是单引号,不是双引号
var countFlag = require('./count');
console.log(countFlag(["java", "android", "nodejs"]));
我们来看一下输出结果:
bogon:hello-nodejs luminal$ node app
有3个元素在数组中
bogon:hello-nodejs luminal$
总结:
我们可以看到count.js代码,module.exports 关键字暴露内容
我们可以看到app.js代码,require关键字请求内容
3、模块之更多内容之间的调用
上面其实就是模块之间函数(方法)的调用,下面我们来看看更多内容之间的调用,我们改一下count.js里面的代码,如下
var countFlag = function(arr) {
return "有"+ arr.length + "个元素在数组中";
}
var pi = 3.1415926;
var sumFlag = function (a,b) {
//这个是es6写法,这个不是单引号,
//` `它是我们键盘1左边的那个符号,
//然后它插入了一个求和表达式。
return `a和b两个数的和为 ${a+b}`;
}
module.exports.countFlag = countFlag;
module.exports.pi = pi;
module.exports.sumFlag = sumFlag;
我们可以理解,module.exports暴露对象,这个对象有三个键module.exports.countFlag/pi/sumFlag,然后把countFlag、pi、sumFlag三个值依次赋值过去。
再修改aap.js里面的代码,如下:
var stuff = require('./count');
console.log(stuff.countFlag(["java", "android", "nodejs"]));
console.log(stuff.pi);
console.log(stuff.sumFlag(3,5));
我们可以理解,require请求得到的是一个对象,然后这个对象找到对应的暴露内容
我们来看一下输出结果:
bogon:hello-nodejs luminal$ node app
有3个元素在数组中
3.1415926
a和b两个数的和为 8
bogon:hello-nodejs luminal$
4、多种写法演示
(1)count.js模块中module.exports 暴露内容写法演示
var countFlag = function(arr) {
return "有"+ arr.length + "个元素在数组中";
}
var pi = 3.1415926;
var sumFlag = function (a,b) {
return `a和b两个数的和为 ${a+b}`;
}
//写法一
// module.exports.countFlag = countFlag;
// module.exports.pi = pi;
// module.exports.sumFlag = sumFlag;
//写法二
module.exports = {
countFlag : countFlag,
pi : pi,
sumFlag : sumFlag
}
count.js中module.exports 暴露内容写法演示三
var pi = 3.1415926;
var sumFlag = function (a,b) {
return `a和b两个数的和为 ${a+b}`;
}
//写法三:把匿名方法直接写里面了
module.exports = {
countFlag : function (arr) {
return "有" + arr.length + "个元素在数组中";
},
pi : pi,
sumFlag : sumFlag
}
(2)app.js模块中require请求内容写法演示
//写法演示一
// var stuff = require('./count');
// console.log(stuff.countFlag(["java", "android", "nodejs"]));
// console.log(stuff.pi);
// console.log(stuff.sumFlag(3,5));
//写法演示二
var stuff = require('./count');
var pi = require('./count').pi;
console.log(stuff.countFlag(["java", "android", "nodejs"]));
console.log(pi);
console.log(stuff.sumFlag(3, 5));
5、有的内容不暴露
如 pi 我们把它不暴露出来,修改后的count.js模块代码,如下:
var pi = 3.1415926;
var sumFlag = function (a,b) {
return `a和b两个数的和为 ${a+b+pi}`;
}
//写法三
module.exports = {
countFlag : function (arr) {
return "有" + arr.length + "个元素在数组中";
},
//pi : pi,
sumFlag : sumFlag
}
修改后的app.js模块代码,如下:
var stuff = require('./count');
//var pi = require('./count').pi;
console.log(stuff.countFlag(["java", "android", "nodejs"]));
//console.log(pi);
console.log(stuff.sumFlag(3, 5));
我们来看一下输出结果:
bogon:hello-nodejs luminal$ node app
有3个元素在数组中
a和b两个数的和为 11.1415926
bogon:hello-nodejs luminal$