nodejs快速入门与nodejs模块的引入

在D:\zhao\nodews目录写一个sum.js文件,内容如下:

function sum(start,end){
	var sum=0;
	for(var i=start;i<=end;i++){
		sum+=i;
	}
	console.log(sum);
}
sum(1,100);

作用很简单,我们一看就明白:这个文件定义了一个函数sum(start,end),用来就算这个闭区间内所有整数的和,最后调用sum函数计算1-100的和,我们怎么运行呢?代开命令行:

D:\zhao\nodews>node sum.js
5050

可以看到运行成功了,在nodejs中我们使用“node  js文件名”的方式来运行js文件。

这没什么好说的,有一个思想,就算nodejs里面的模块化,就比如上面的这个计算两数之间所有整数的和的功能,我们可以把它作为一个模块,不管在任何地方任何文件想要使用这个功能的话,只需要引入这个模块就可以了,这样就做到了代码的复用,也符合编程代码“不重复发明轮子”的思想。

那好,我们现在就把sum.js作为一个模块吧,新建mymodules文件夹,并把sum.js放进去,然后再新建个test.js,在test.js里引用我们的模块sum.js。在windows命令行使用tree命令查看整个目录结构如下:

image.png

怎么引入模块呢?模块我再强调一遍,模块其实就是能完成一定功能的js文件,比如我们上边的sum.js这个文件可以完成计算和的功能。nodejs里面可以使用require来引入模块,我们编写test.js的内容如下:

require("./mymodules/sum.js")
sum(1,100);

按照我们的猜想,如果此时执行"node  test.js"不出错的话,应该会输出两个5050,一个是sum.js里面输出的,一个是test.js里面调用了sum函数输出的,那我们试试吧:

D:\zhao\nodews>node test.js
5050
D:\zhao\nodews\test.js:2
sum(1,100);
^

ReferenceError: sum is not defined
    at Object.<anonymous> (D:\zhao\nodews\test.js:2:1)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Function.Module.runMain (module.js:676:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3

D:\zhao\nodews>

几个意思啊,我们看到在输出了一个5050之后,后面就报错了,说是sum  is  not  defined,这是为什么呢?因为在nodejs里面每一个模块(能完成一定功能的js文件)的作用域都是相互隔离的,比如你再sum.js里面定义了一个变量name,在其他js文件中是不能直接使用的,需要在sum.js文件里面把这个name导出(exports)才行,不仅仅是变量需要导出,只要是你在本模块里面想暴露给其他模块使用的变量、函数、对象都需要导出(exports)。那么我们就修改sum.js如下:

var name="sum.js";
function sum(start,end){
	var sum=0;
	for(var i=start;i<=end;i++){
		sum+=i;
	}
	console.log(sum);
}
exports.func_sum=sum;
exports.var_name=name;

新增了一个变量name,并新增了exports导出语句。修改test.js如下:

var module_sum=require("./mymodules/sum.js")
module_sum.func_sum(1,100);
console.log(module_sum.var_name);

我们使用一个变量module_sum接收require进来的sum.js的导出,这里sum.js的导出其实就是exports这个对象,它被我们使用module_sum这个变量来接收,我们之后自然就可以使用对象的属性和函数了。module_sum这个名字是我们随便起的,只是为了更准确的表达这个意思,你可以叫你自己喜欢的名字。在这里module_sum就相当于sum.js里面的exports对象。我们运行结果如下:

image.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值