定义一个counter.js
var i = 0;
function count() {
return ++i;
}
exports.count = count;
然后通过main.js加载这个模块
var counter1 = require('./util/count');
console.log(counter1.count());
但是不理解counter.js最后一句的意思。
exports.count = count;
这句话的意思不是把count这个函数赋值给exports.count吗?之前看《javascript高级程序设计》有提过,只写函数名但不加括号是代表这个函数,但是不执行。
既然导出的是个函数,为什么能通过count这个函数来实现count.count()的调用?这里的count是指整个js的全局对象还是只是一个函数?
疑惑了很久,谢谢各位~
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我来做个简单的解释吧,这个解释可能你更容易理解。
虽然这样解释不是很专业,但是应该容易理解,希望能够帮到你。
你也可以从require的角度去理解
等价理解为
我觉得有一个点大家都没说,node定义了每一个js文件就是一个模块,要暴露出方法,只能用export
这个属于js模块化相关的知识,nodejs貌似是遵循的commonjs规范,通过export和require来实现模块之间的引用和导出,而且js模块化有很多方法,可以了解下。