既然了解了一些es6的一些新特性,那么接下来就学习一下node.js吧。本文只简单介绍一下node的初步使用,更多更具体的模块及方法可查看官方API,和我一样英文不好的可以查看中文版API。
安装
nodejs官网(或nodejs中文网)下载安装文件,傻瓜式安装,不做介绍。
安装完成之后,打开cmd,键入node -v即可查询node版本
Hello World
在cmd中键入node并回车,如下图
之后将以下代码粘贴进去并敲击回车,你会看到
const http=require('http');
const hostname='localhost';
const port=9999;
const server =http.createServer(
(req,res)=>{
res.statusCode=200;
res.setHeader('Content-type','text/plain');
res.end('Hello World\n');
}
)
server.listen(port,hostname,()=>{
console.log('server is running');
})
之后在浏览器的地址栏敲入localhost:9999
–Hello World。
第一行代码中的require
用来用来加载node的http模块(这个我们下面会说)。但是这样看起来很累有木有,node还支持将文件保存起来,通过node 文件路径
来执行。将以上代码保存为test.js,并键入node test.js
。
require、exports&module.exprots
require用来引入模块,exports和module.exports用于输出模块。
首先,创建calculator.js,内容如下:
let calculator={
add(a=0,b=0){
let res=a+b;
console.log(res)
return res;
}
,
mul(a=0,b=0) {
let res=a*b;
console.log(res);
return res;
}
}
// exports.add=calculator.add;
// module.exports=calculator;
然后创建mod.js内容如下:
var mod=require('./mod');
console.log(mod);
//mod.add(3,8);
此时用node执行mod.js,可看到控制台打印出一个空对象{}
然后我们单独解开一个注释,再次运行mod.js,打印如下:
由上可知:如果我们需要将模块mod中的一些东西暴露给调用的模块mod,那么需要将暴露的部分添加到exports或module.exports对象上。此时解开mod.js最后一行注释,便会得到3+8的值。
当我们同时解开mod.js的注释时会发生什么呢?
可以看到打印的mod对象和单独解开module.exports结果是一样的,说明require返回的其实是module.exports而非exports。
关于两者的区别可以看下官方介绍 module 对象,也可以看下 Node.js模块导出exports 和 module.exports 的区别。
另外引用官方API的一句话:
如果希望模块根导出为一个函数(比如构造函数)或一次导出一个完整的对象而不是每次都创建一个属性,可以把它赋值给 module.exports 而不是 exports。