Node.js模块介绍
介绍几个常用的Node.js的模块。
Http
相信这个模块差不多是最容易被接触到的模块,原因之一是因为Node.js用来做WebServer的时候经常直接拿该模块实现简单的一个Http服务。
送上一个官方的例子hello world:
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
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 running at http://${hostname}:${port}/`);
});
事件上这种用法我们还真不常用,通常如果要做一个WebServer,大家通常会使用类似express这样一些做过一些封装的模块。这个模块最常用的倒是发起一个http请求,向第三方站点(典型的有微信公众号)进行通信。比如以下例子请求淘宝ip地址库,获取某个已知ip的信息。
import { get } from 'http';
export default function atom(msg: ICommonParams, headers: IHeaders) {
const ipAddress = '127.0.0.1';
const server_address = 'http://ip.taobao.com/service/getIpInfo.php?ip=' + ipAddress;
return new Promise<IWebResult>((resolve, reject) => {
const req = get(server_address, (rs) => {
let buf = '';
rs.on('data', (chunk) => {
buf += chunk;
});
rs.on('end', () => {
const data = JSON.parse(buf);
if (data.code === 0) {
resolve(data.data);
} else {
reject(data);
}
});
});
req.on('error', (e) => {
reject(e);
});
});
}
File System
这个模块我们一般用它来做文件的读和写,在浏览器中,使用JavaScript是不可以访问本地磁盘文件的,而在Node.js中,你可以这样做。如果我们希望操作本机的一些磁盘文件,而又对系统的脚本编写不熟悉的话,刚好你的电脑上有Node.js,那么你就可以使用JavaScript脚本来做一些文件的处理,还是比较方便的,这里只介绍一下文件的读写(只介绍10.2版本才支持的所谓试验性
功能)
读文件
const fs = require('fs').promises;
const content = await fs.readFile('/file/path.txt', 'utf8');
写文件
const fs = require('fs').promises;
await fs.writeFile('/file/path.txt', 'file content', 'utf8');
Path
获取文件名
const path = require('path');
path.basename('/foo/bar/baz/asdf/quux.html');
// Returns: 'quux.html'
path.basename('/foo/bar/baz/asdf/quux.html', '.html');
// Returns: 'quux'
获取文件路径
const path = require('path');
path.dirname('/foo/bar/baz/asdf/quux');
// Returns: '/foo/bar/baz/asdf'
获取文件后缀名
const path = require('path');
path.extname('index.html');
// Returns: '.html'
path.extname('index.coffee.md');
// Returns: '.md'
path.extname('index.');
// Returns: '.'
path.extname('index');
// Returns: ''
path.extname('.index');
// Returns: ''
拼接路径
const path = require('path');
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// Returns: '/foo/bar/baz/asdf'