Node.JS 的常用 API
url 主要是配置一系列和路径相关的信息
url.parse(urlString[, parseQueryString[, slashesDenoteHost]]) 将一个 URL 字符串解析为 URL 对象
urlString: 解析的路径字符串
parseQueryString: 返回是布尔类型, 主要用来解析 query 的
slashesDenoteHost: 返回是布尔类型, 当你不确定你的请求协议时, 辅助帮助你进行解析
url.format(urlObj,parseObj,slashesObj) 将 url 对象转换为字符串
与 parse 参数相反
url.resolve(from, to) 将基础路径和后缀路径转换成目标路径
from 解析时相对的基本 URL
to 要解析的超链接 URL
值得注意的是基本路径要在路径最后添加'/', 否则合并会找到你最近的'/'并替换
- const url = require('url');
- url.resolve('/one/two/three', 'four'); // '/one/two/four'
- url.resolve('http://example.com/', '/one'); // 'http://example.com/one'
- url.resolve('http://example.com/one', '/two'); // 'http://example.com/two'
queryString 为查询字符串提供扩展
querystring 模块提供了一些实用函数, 用于解析与格式化 URL 查询字符串
querystring.parse(str,con,seq)
str 要解析的 URL 查询字符串
con 用于界定查询字符串中的键值对的子字符串. 默认为 '&'
seq 用于界定查询字符串中的键与值的子字符串. 默认为 '='
querystring.stringify(obj,con,seq)
obj 要序列化成 URL 查询字符串的对象
con 用于界定查询字符串中的键值对的子字符串. 默认为 '&'
seq 用于界定查询字符串中的键与值的子字符串. 默认为 '='
querystring.escape(str) 相当于 encodeURI 将 Asc 编码转换成 utf-8
对给定的 str 进行 URL 编码
该方法是提供给 querystring.stringify()使用的, 通常不直接使用
querystring.unescape(str) 相当于 decodeURI 将 utf-8 转换成 ASc
对给定的 str 进行解码
该方法是提供给 querystring.parse()使用的, 通常不直接使用
events - 事件触发器
大多数 Node.JS 核心 API 构建于惯用的异步事件驱动架构, 其中某些类型的对象 (又称触发器, Emitter) 会触发命名事件来调用函数(又称监听器, Listener)
当 EventEmitter 对象触发一个事件时, 所有绑定在该事件上的函数都会被同步地调用
例子, 一个简单的 EventEmitter 实例, 绑定了一个监听器. eventEmitter.on() 方法用于注册监听器, eventEmitter.emit() 方法用于触发事件.
- const Eventemitter = require("events")
- class Player extends Eventemitter {}
- const player = new Player()
- // 使用 eventEmitter.on() 注册监听器时, 监听器会在每次触发命名事件时被调用
- player.on("change",(track) => {
- console.log(`node 事件机制 `,${track})
- })
- // 使用 eventEmitter.once() 可以注册最多可调用一次的监听器. 当事件被触发时, 监听器会被注销, 然后再调用
- //player.once("change",(track) => {
- // console.log(`node 事件机制 `,${track})
- //})
- player.emit("change","react")
- player.emit("change","vue")
fs - 文件系统
fs 模块提供了一些接口用于以一种类似标准 POSIX 函数的方式与文件系统进行交互
所有的文件系统操作都有同步和异步两种形式
异步形式的最后一个参数都是完成时的回调函数. 传给回调函数的参数取决于具体方法, 但回调函数的第一个参数都会保留给异常. 如果操作成功完成, 则第一个参数会是 null 或 undefined
fs.Stats 类
fs.Stats 对象提供了一个文件的信息
stats.isDirectory() 如果 fs.Stats 对象表示一个文件系统目录, 则返回 true
stats.isFile() 如果 fs.Stats 对象表示一个普通文件, 则返回 true
fs.mkdir(path[, options], callback)
异步地创建目录. 完成回调只有一个可能的异常参数
- // 创建 /temp/a/apple 目录, 不管 `/temp` 和 /temp/a 目录是否存在.
- fs.mkdir('/temp/a/apple', (err) => {
- if (err) throw err;
- });
- fs.writeFile(file, data[, options], callback)
异步地写入数据到文件, 如果文件已经存在, 则覆盖文件. data 可以是字符串或 buffer
- fs.writeFile('temp.js', 'keep study', (err) => {
- if (err) throw err;
- console.log('文件已保存!');
- });
- fs.appendFile(path, data[, options], callback)
异步地追加数据到文件, 如果文件不存在则创建文件. data 可以是字符串或 Buffer
- fs.appendFile('temp.js', '追加的数据', (err) => {
- if (err) throw err;
- console.log('数据已追加到文件');
- });
- fs.readFile(path[, options], callback)
异步地读取一个文件的全部内容
- fs.readFile('/etc/passwd', (err, data) => {
- if (err) throw err;
- console.log(data);
- });
回调有两个参数 (err, data), 其中 data 是文件的内容.
如果未指定字符编码, 则返回原始的 buffer.
如果 options 是一个字符串, 则它指定了字符编码. 例子:
- fs.readFile('/etc/passwd', 'utf8', callback);
- fs.readdir(path[, options], callback)
读取目录的内容. 回调有两个参数 (err, files), 其中 files 是目录中文件名的数组, 不包含 '.' 和 '..'.
options 参数用于传入回调的文件名. 它可以是一个字符串, 指定字符编码. 也可以是一个对象, 其中 encoding 属性指定字符编码. 如果 encoding 设为'buffer', 则返回的文件名会是 Buffer 对象.
fs.rmdir(path, callback)
删除目录
fs.readFileSync(path[, options])
同步读取文件
fs.readdirSync(path[, options])
同步读取目录
fs.unlink(path, callback)
解除关系(也即删除文件)
readFileSync 和 unlink 结合实现删除一个目录及其目录下的文件的例子:
- const fs = require('fs');
- fs.readdirSync("logs").map((file) => {
- fs.unlink(`logs/${file}`,() => {
- console.log("删除成功")
- })
- })
- fs.rmdir("logs", (err)=> {
- console.log("确定要删除吗?")
- })
node 框架之 express
node 框架之 koa2
文档持续更新中~~~
来源: https://segmentfault.com/a/1190000016989682