NodeJS踩坑实录
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
文档持续更新中~~~
原文地址:https://segmentfault.com/a/1190000016989682
NodeJS踩坑实录的更多相关文章
- 后端路由项目由 gulp 改为 webpack 的踩坑实录
前言 公司有个后端路由的项目是用 gulp 作为前端自动化构建工具,最近学习了一下 webpack,深感其强大,一狠心将其改成了 webpack 构建,以下是踩坑实录. gulp 先来说说原来的架构. ...
- JAVA实用案例之文件导出(JasperReport踩坑实录)
写在最前面 想想来新公司也快五个月了,恍惚一瞬间. 翻了翻博客,因为太忙,也有将近五个多月没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六 ...
- ffmpeg 踩坑实录 添加实时水印(二)
一.背景介绍 最近领导要求做一个视频录制的相关项目.其中,需要对视频文件进行添加 实时时间水印.于是,我想到了使用之前的ffmpeg来做. 二.ffmpeg实际操作 首先把需要添加水印的视频文件,上传 ...
- JasperReport报表导出踩坑实录
写在最前面 翻了翻博客,因为太忙,已经好久没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六月份的时候写过一篇利用poi文件导入导出的小De ...
- HashMap踩坑实录——谁动了我的奶酪
说到HashMap,hashCode 和 equals ,想必绝大多数人都不会陌生,然而你真的了解这它们的机制么?本文将通过一个简单的Demo还原我自己前不久在 HashMap 上导致的线上问题,看看 ...
- (最新)VS2015安装以及卸载过程——踩坑实录
前言 Visual Studio (简称VS)是微软公司旗下最重要的软件集成开发工具产品.是目前最流行的 Windows 平台应用程序开发环境,也是无数人学习编程的入门软件之一.Visual Stud ...
- ffmpeg 踩坑实录 安装与视频切片(一)
这段时间一直在做一个关于视频处理的项目.其中有一块需要切片相关功能.于是采用了ffmpeg来完成相关需求. 第一,ffmpeg的安装. 首先下载官方包,我这里用的是ffmpeg-release-64b ...
- windows安装rabbitmq踩坑实录
最近学习springcloud消息总线需要用到rabbitmq,然后安装的时候踩了一些坑,记录如下: 首先安装rabbitmq之前需要先安装erlang,因为rabbitmq服务端使用erlang写的 ...
- Angular2,Springboot,Zuul,Shiro跨域CORS请求踩坑实录
前言:前后端分离,业务分离,网关路由等已经成为当下web application开发的流行趋势.前端以单页面路由为核心的框架为主体,可以单独部署在nodejs或nginx上.后端以springboot ...
随机推荐
- BZOJ 3878 [AHOI&JSOI2014]奇怪的计算器 (线段树)
题面:BZOJ传送门 洛谷传送门 线段树好题 题目保证$a$一定是正整数,容易发现计算结果是单调的 我们把询问离线,并按照从小到大排序 某次操作可能导致某些位置达到边界$L/R$ 根据单调性的结论 这 ...
- MYSQL存储过程初步认知
存储过程(Stored Procedure): 一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行. 优点:将重 ...
- ORA-29857: 表空间中存在域索引和/或次级对象
今天小编在操作 oracle 数据库,删除表空间时引发了异常!! SQL> drop tablespace nbmap including contents; 为什么会造成以上的异常呢? 根据小 ...
- POJ2389 Bull Math
/* POJ2389 Bull Math http://poj.org/problem?id=2389 高精度乘法 * */ #include <cstring> #include < ...
- $_SERVER 详解
$_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言 $_SERVER['REMOTE_ADDR'] //当前用户 IP . $_SERVER['REMOTE_HOST'] ...
- POJ 2407
裸 的求欧拉函数 #include <iostream> #include <cstdio> #include <cstring> #include <alg ...
- DELL灵越 n4030笔记本安装win7之无线网卡驱动安装
本人安装的是win7 32位专业版,安装完成后发现无线网卡找不到了.DELL灵越 n4030自己带无线网卡的.问题的根源在于无线网卡驱动没有安装或没有安装匹配的无线网卡驱动. 那么问题来了.什么无线网 ...
- MantisBT 问题分配显示 姓名
MantisBT 在提交问题的时候,系统默认"分配"给备选账号,而不是姓名. 这样在使用的时候很不便. 能够通过改动配置文件来改变,找到MantisBT根文件夹下文件config_ ...
- Binary Indexed Tree 总结
特点 1. 针对 数组连续子序列累加和 问题(需要进行频繁的 update.sum 操作): 2. 并非是树型结构,只是逻辑上层次分明: 3. 可以通过 填坑法 来理解: 4. 中心思想:每一个整数都 ...
- 淘宝druid报错:javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStat
问题: 启动tomcat报错: Tomat报出一下异常:ERROR [com.alibaba.druid.stat.DruidDataSourceStatManager] – unregister m ...