作者:郭泽豪 本篇教程关于Nodejs的文件模块机制,具体讲CommonJs规范以及Nodejs文件模块的实现原理。...在Node中,模块分为两类:一类是Node本身提供的模块,称为核心模块;另一类是用户编写的模块,叫文件模块。 (1)核心模块部分在Node源代码编译的过程中,编译进了二进制执行文件。...自定义模块指的是非核心模块,也不是路径形式的标识符。它是一种特殊的文件模块,可能是一个文件,也可能是一个包。这类文件的查找是最费时的。...我们尝试创建module_path.js文件,其内容是console.log(module.paths),输出结果如下; [ 'C:\\Users\\Administrator\\Desktop\\nodejs...(3)JSON文件的编译,即.json文件 .json文件的编译是3种文件模块编译方式中最简单的。
概述 NodeJS 提供了 fs.watch / fs.watchFile 两种 API: fs.watch: 推荐,可以监听文件夹。基于操作系统。 fs.watchFile: 只能监听指定文件。...文件 md5 某些开源软件,会将文件内容都清空后,再添加内容。而且保存过程中,可能会出现多个中间态。 对于文件更改的情况,检测内容的 md5 值,是个不错的方法。...对于常见的库来说,除了不信任原生 API、使用上述技巧外,很重要的是,都根据 fs.Stats 类的信息,自定义逻辑来判断文件状态,以此保证不同平台兼容性。...下面是在 Node10 中,打印的文件状态信息: Stats { dev: 16777222, mode: 33188, nlink: 1, uid: 501, gid: 20,...); } }.bind(this) ); // ...省略 } 成熟的库 nodemon 参考链接 精读《如何利用 Nodejs
学习笔记来源于 哔哩哔哩小满zs的nodejs课程 && 网上搜索的一些资料 小满zs: OS_哔哩哔哩_bilibili 1. 介绍 Node.js的os模块提供了与操作系统进行交互的功能。...一些常用的os模块方法和属性包括: os.platform():返回当前操作系统的平台。 os.arch():返回当前 CPU 架构。...通过os模块,你可以访问这些信息并在你的应用程序中使用它们。你可以根据需要使用这些方法和属性来执行各种操作,例如获取系统信息、处理文件路径、执行系统命令等。 2....| 'sunos' | 'win32' | 'cygwin' | 'netbsd'; aix: IBM Power AIX | IBM; freebsd:FreeBSD 是一个适用于现代服务器
async模块是为了解决嵌套金字塔,和异步流程控制而生,常用方法有series、parallel、waterfall、parallelLimit、auto、whilst、doWhilst、forever...parallelLimit 这个方法和parallel类似,只是limit参数限制了同时并发执行的个数,不再是无限并发,调用方法为:parallelLimit(tasks,limit,[callback...5秒运行完毕, 函数1和2并行,3秒执行完毕, 函数1和2执行完毕后,函数3,4依次执行共计5秒. whilst 相当于while循环,fn函数里不管是同步还是异步都会执行完上一次循环才会执行下一次循环...callback(); },1000) }, function(err){ console.log(err); }); compose 这个方法会创建一个异步的集合函数,执行的顺序是倒序....前一个fn的输出是后一个fn的输入.有数据交互,调用方法:compose(fn1,fn2,fn3...) var task1 =function(m,callback){ console.log
这次研究下 nodejs 的 crypto 模块,它提供了各种各样加密算法的 API。这篇文章记录了常用加密算法的种类、特点、用途和代码实现。其中涉及算法较多,应用面较广,每类算法都有自己适用的场景。...下面实现了一个获取文件标识的函数: const crypto = require("crypto"); const fs = require("fs"); function getFileHash(file...(); Nodejs 提供了 Cipher 类和 Decipher 类,分别用于加密和解密。...除此之外,crypto 模块还提供了其他算法工具,例如 ECDH 在区块链中有应用。这篇文章没有再记录,感兴趣的同学可以去查阅相关资料。...参考链接 NodeJS docs: crypto 推荐:Node.js 加密算法库 Crypto 推荐:什么是 hash?
前言path 模块是 nodejs 中用于处理文件/目录路径的一个内置模块,可以看作是一个工具箱,提供诸多方法供我们使用,当然都是和路径处理有关的。...同时在前端开发中 path 模块出现的频率也是比较高的,比如配置 webpack 的时候等。本文是对该模块中一些常用的方法进行介绍,走,一起学习下吧。...需要注意下,nodejs 中所有的模块(内置,自定义)都需要使用 requier 进行导入,一般导入位置在文件顶部。...dirname,filename__dirname:可以看作是 nodejs 中的全局变量,它始终表示当前执行文件所在目录的完整目录名(绝对路径)__filename:可以看作是 nodejs 中的全局变量...结语关于nodejs path 模块,我们今天就说到这里了,虽然 api 不是很多,但是 path 模块在前端的使用频率还是非常高的,所以觉得很值得学习了解一下的。
直接上图 node require(X).jpg 参考文献:require() 源码解读
nodejs 提供了 DNS 查询和操作的 API,本篇的目录是: 什么是 DNS 解析? dns.resolve*() vs dns.lookup() 什么是反向域名解析?...dns.resolve*() vs dns.lookup() 在 dns 模块中,提供了两类解析的 API:resolve*() 和 loopup()。...dns 模块提供了reverse()函数来实现反向域名解析: dns.reverse("220.181.38.148", (err, hostnames) => { if (err) throw...} = require("dns"); const resolver = new Resolver(); resolver.setServers(["4.4.4.4"]); 参考链接 Nodejs DNS...Doc Node.js:DNS 模块的使用
cluster 是基于 child_process 模块的,所以通信的做法和 child_process 区别不大。...cluster 模块中有 2 个 exit 事件:一个是 Worker 上的,仅用于工作进程中;另一个是主进程上,任何一个工作进程关闭都会触发。...关于检测方法可以看这篇文章《NodeJS 模块研究 - os》。...这些方法在 vemojs 中都有应用,具体可以看这篇文章:《VemoJS 源码拆解》 参考链接 Nodejs 文档 NodeJS 模块研究 - os VemoJS 源码拆解 autocannon 解读...NodeJS 的 Cluster 模块 Node.js 集群(cluster):扩展你的 Node.js 应用
读了 events 模块的文档,研究了几个有意思的问题: ?️ 事件驱动模型 ?️ 优雅的错误处理 ?️ 监听器器队列顺序处理 ?️ 内存管理与防止泄漏 ?...配合 Promise 使用 引用/转载 请声明出处:原文链接: xxoo521.com 事件驱动模型 Nodejs 使用了一个事件驱动、非阻塞 IO 的模型。...events模块是事件驱动的核心模块。很多内置模块都继承了events.EventEmitter。 自己无需手动实现这种设计模式,直接继承EventEmitter即可。...推荐做法是:在创建实例后,应该立即注册error事件。...监听器,其数据结构是 {listener: Function} // 正常监听器,直接是 Function const listeners = ins.rawListeners(name
nodejs 的 zlib 模块提供了资源压缩功能。例如在 http 传输过程中常用的 gzip,能大幅度减少网络传输流量,提高速度。...本文将从下面几个方面介绍 zlib 模块和相关知识点: 文件压缩 / 解压 HTTP 中的压缩/解压 压缩算法:RLE 压缩算法:哈夫曼树 文件的压缩/解压 以 gzip 压缩为例,压缩代码如下:...它的原理是:记录连续重复数据的出现次数。它的公式是:字符 * 出现次数。 例如原数据是 AAAAACCPPPPPPPPERRPPP,一共 18 个字节。...压缩比例是:12 / 17 = 70.6% RLE 的优点是压缩和解压非常快,针对连续出现的多个字符的数据压缩率更高。但对于ABCDE类似的数据,压缩后数据会更大。...无论哪种数据类型(文本文件、图像文件、EXE 文件),都可以采用哈夫曼树进行压缩。 参考链接 Nodejs 文档 30 分钟 HTTP 查漏补缺之 Vary 程序员不得不了解的硬核知识大全
Buffer 作为 nodejs 中重要的概念和功能,为开发者提供了操作二进制的能力。...nodejs 核心 API,它提供我们处理二进制数据流的功能。...一个字节是 8bit,而字节的表示也是由两个 16 进制(4bit)的数字组成的。...下面,是用Buffer.from()和buf.toString()来封装的 nodejs 平台的编码转换函数: function trans(str, from = "utf8", to = "utf8...例如对于生成 Buffer 实例的from(),不同类型的参数,nodejs 底层的行为是不同的。 为了更形象地解释,请看下面两段代码。
常用函数 文件操作相关的模块。...具体用法,可以参考Node.js文档:http://nodejs.cn/api/fs.html fs.stat/fs.statSync:访问文件的元数据,比如文件大小,文件的修改时间 fs.readFile.../fs.readFileSync:异步/同步读取文件 fs.writeFile/fs.writeFileSync:异步/同步写入文件 fs.readdir/fs.readdirSync:读取文件夹内容...删除非空文件夹:使用fs-extra 第三方模块来删除。.../test"; fs.readdir(target, (err, files)=>{ //遍历数组 files.forEach( f =>{ // 判断当前的f到底是文件夹还是文件
读了 path 模块的文档,研究了几个有意思的问题: ?️ 路径片段分隔符 vs 路径定界符 ?️ path.join() vs path.resolve() ?️...它在 Windows 上是\,在 Unix 上是/。它用于指定文件(夹)的路径中。 path.delimiter,是路径定界符。它在 Windows 上是 ;,在 Unix 上是:。...为了解决这个问题,nodejs 也提供了path.win32和path.posix来解决这个问题。 例如,我在我的 mac 上想解析一段 windows 路径格式的数据,拿到它的 basename。...,因为本机是 mac。...这两种接口,在处理跨平台的文件路径时候,有很大作用。
querystring 是专门用来解析和格式化 URL 的查询字符串 URL 的工具。...例如对字符串 心 谭 来说: 在 java 中,空格换成+号,结果是%E5%BF%83+%E8%B0%AD 在 js 中,空格换成字节码,结果是%E5%BF%83%20%E8%B0%AD 在 querystring.encode...} else { ans += chToHex(str[i]); } } return ans; } 对于原文地址:心谭博客这段字符串的编码结果是:...%E5%8E%9F%E6%96%87%E5%9C%B0%E5%9D%80%EF%BC%9A%E5%BF%83%E8%B0%AD%E5%8D%9A%E5%AE%A2 参考链接 Nodejs v12 文档
常用函数 path模块供了一些工具函数,用于处理文件与目录的路径 path.basename:返回一个路径的最后一部分 path.dirname:返回一个路径的目录名 path.extname:返回一个路径的扩展名...\node.exe path-demo.js __filename: d:\03-BlockChain\06_nodejs课程\day43_nodejs_day01\code\Node01\path-demo.js...path-demo.js d:\03-BlockChain\06_nodejs课程\day43_nodejs_day01\code\Node01 .jpg F:\aaa\bbb\test.jpg F:...\a\b\c\d 参考 黑马程序员 120天全栈区块链开发 开源教程 https://github.com/itheima1/BlockChain 其他 今天是除夕节日,明天就是春节了。...这个春节大家都不要出去乱跑了,在家呆着是最安全的。为奋战在一线的医护工作者加油,他们同样是父母,同样是子女,真的非常不容易。大家平时多锻炼身体,注意卫生,希望大家过个祥和年。
node 的fs文档密密麻麻的 api 非常多,毕竟全面支持对文件系统的操作。文档组织的很好,操作基本分为文件操作、目录操作、文件信息、流这个大方面,编程方式也支持同步、异步和 Promise。...本文记录了几个文档中没详细描写的问题,可以更好地串联fs文档思路: 文件描述符 同步、异步与 Promise 目录与目录项 文件信息 stream 文件描述符 文件描述符是一个非负整数。...与这个 api 相对应的是:fs.readFile(path[, options], callback)。...ReadStream 与 WriteStream 在 nodejs 中,stream 是个非常重要的库。很多库的 api 都是基于 stream 来封装的。...但是对于几 GB 的大文件,显然会有问题。 那么针对大文件的解决方案自然是:一点点读出来。这就需要用到 stream 了。
常用函数 文件操作相关的模块。...具体用法,可以参考Node.js文档:http://nodejs.cn/api/fs.html fs.stat/fs.statSync:访问文件的元数据,比如文件大小,文件的修改时间 fs.readFile...删除非空文件夹:使用fs-extra 第三方模块来删除。.../test"; fs.readdir(target, (err, files)=>{ //遍历数组 files.forEach( f =>{ // 判断当前的f到底是文件夹还是文件...天全栈区块链开发 开源教程 https://github.com/itheima1/BlockChain 今日一番 今天一番在家做了一些家务,还出门逛了一圈,街上也不是完全没有人,超市、药店、菜市场人是最多的
个人原创,如需转载,请联系作者 URL模块用于解析和处理URL字符串,提供了三个方法: parse format resolve parse方法 将URL解析成一下几部分: href:原始url...protocal:url协议 host:主机 host中又包含以下信息: auth:用户认证 port:端口 hostname:主机名 pathname:跟在host之后的整个文件路径 search:...布尔值用来确定queryString是否要用querystring模块来解析,默认为false。...host: 'www.nodejs.org', ... port: null, ... hostname: 'www.nodejs.org', ......href: 'http://www.nodejs.org/some/url/?
在 nodejs 中,实现各种功能,总避免不了和“数据”打交道,这些数据可能是 Buffer、字符串、数组等等。但当处理大量数据的时候,如何保证程序的稳健性?如何不让内存爆掉呢?...nodejs 提供了 stream 模块,来让开发者更优雅地处理数据。这需要开发者理解“流”的含义,遵循“流”的相关规范,来进行“流”编程。 相较于其他的模块系列,需要理解的概念偏多。...本文主要从以下几个方面深入 stream 模块: 什么是“流”? 流有哪几种类型? 内部缓冲的作用? 流动模式 vs 暂停模式 背压问题 如何产生的? 如何解决背压问题?...但是,处理难度的提高换来的是程序性能提升。如果通过fs.readFile()一次性将 100GB 大文件读入内存,那么可能会发生以下几个问题: 内存错误。...下面是一个基于 stream,复制大文件的函数: function copyBigFile(src, dest, callback) { if (typeof callback !
领取专属 10元无门槛券
手把手带您无忧上云