今天开始学习nodeJs
node.js是什么?
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
有了Node.js,我们也不用依赖浏览器来调试我们js代码了。
安装完毕之后,就可以使用了。
每个.js文件nodejs就认为是一个模块。
例如:nodejs1.js
'use strict'
var s = 'Hello';
var b = 'Bye';
function greet(name){
console.log(s+','+name+'!');
}
function goodBye(name){
console.log(b+','+name);
}
module.exports = greet;
module.exports = goodBye;
最后exports表示向外提供的函数或者对象(函数也是对象)
main.js
'use strict'
var g = require('./nodejs1');
var s = 'Kevin';
g(s)
结果是什么?
Bye,Kevin
引入nodejs1这个模块,最后只应用了该模块最后一行向外提供的对象,如何都应用?留个问题在这里。
nodejs向外提供对象有两种方式
exports.obj1 = greet;
exports.obj2 = goodBye;
或者
module.exports = {
obj1: greet,
obj2: goodBye
};
这两个是等效的。
但是使用exports只能用.(点操作符)来赋值,不能用类似初始化,来初始化exports
例如:
exports = {
obj1: greet,
obj2: goodBy
} 是错误的,有些IDE会直接提示编译错误,这是nodejs内部实现导出模块决定的。
如果我们要编写一个模块,一定要确保别人引用的时候是可以使用的。
刚才的问题就有了答案了,我们如果要对外提供模块中的两个对象,需要用
exports.obj1 = greet;
exports.obj2 = goodBye;
或者
module.exports = {
obj1: greet,
obj2: goodBye
};
而不能是我上边写的,这样写等于是重新给module.exports赋值了,引用就换成了goodBye的引用了。
既然是向外提供对象,那就不仅仅是函数了。只要是对象就可以向外提供,例如:
module.exports = {
obj1: greet,
obj2: goodBye,
default:"hahaha"
};
var greet = require('./nodejs1');
var s = 'Kevin';
greet.obj1(s);
var def = greet.default;
console.log(def);
输出:
Hello,Kevin!
哈哈哈