飞道科技

飞道科技文档总汇

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'

其它