理解Nodejs 的模块化思想 例子

在学习教程:nodejs教程 的时候, 遇到了怎么输出模块接口的问题,也就是怎么理解exports的用法.

hello.js文件里面的定义大家是一样的:

function Hello(){
	var name;
	this.setName = function(thisName){
		name = thisName;
	}
	this.sayName = function(){
		console.log('hello\t'+name);
	}
};
//定义了一个类

module.exports = Hello;//当我们使用require,来引入这个文件的时候得到的是这个类的定义



主程序我叫做sayName.js, 目的就是要让Hello的实例说出名字

var Hello = require ('./hello');
//module.exports = Hello, 而Hello是一个类,这里需要实例化
var hello= new Hello();
hello.setName('loudyten');
hello.sayName();
运行结果:




主程序我叫做sayName-erro.js, 我们来试试错误的引用

var Hello = require ('./hello');
//module.exports = Hello, 而Hello是一个对象,这里需要实例化
console.log(Hello.toString()+'\n');//实际上就是把类的定义代码引用过来了

Hello.setName('fff');


运行结果:


可以看到提示错误这个类定义的代码是没有 setName()这个方法的,  类的定义当然有方法,  只是只有类的对象(或者实例)才能调用方法。


这里主要是要区别输出的是对象还是还是输出的是类,原教程的第一个例子输出的是对象,当然可以引用,但是描述上也让我懵B了一段时间:



在原链接地址中的第一个例子exports出来的是一个对象:

hello-object.js如下:

exports.world  = function()
{
	console.log('hello world');
};

main-process.js如下:

var hello = require('./hello-object');
console.log(hello.toString());
hello.world();
运行结果:



这也就证明了,在hello.object.js 中的写法,实际上exports出来的是一个对象,而不是一个类。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值