NodeJS踩坑实录

栏目: Node.js · 发布时间: 6年前

内容简介:大多数 Node.js 核心 API 构建于惯用的异步事件驱动架构,其中某些类型的对象(又称触发器,Emitter)会触发命名事件来调用函数(又称监听器,Listener)当 EventEmitter 对象触发一个事件时,所有绑定在该事件上的函数都会被同步地调用例子,一个简单的 EventEmitter 实例,绑定了一个监听器。 eventEmitter.on() 方法用于注册监听器,eventEmitter.emit() 方法用于触发事件。

nodejs的常用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

文档持续更新中~~~


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

国际大学生程序设计竞赛例题解

国际大学生程序设计竞赛例题解

郭嵩山 / 电子工业出版社 / 2007-7 / 32.00元

《国际大学生程序设计竞赛例题解3:图论、动态规划算法、综合题专集》以图论、动态规划算法、综合题的形式介绍了ACM国际大学生程序设计竞赛(ACM/ICPC)中所用到的典型算法,并结合例题,对如何灵活地运用这些算法进行比较详细分析和深入浅出的讲解。《国际大学生程序设计竞赛例题解3:图论、动态规划算法、综合题专集》以精讲多练为教学宗旨,并在每一个专题论述后用一章的篇幅选出一批有代表性的竞赛例题,对每道例......一起来看看 《国际大学生程序设计竞赛例题解》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具