首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深入浅出 Nodejs( 二 ):Nodejs 文件模块机制

作者:郭泽豪 本篇教程关于Nodejs文件模块机制,具体讲CommonJs规范以及Nodejs文件模块的实现原理。...在Node中,模块分为两类:一类Node本身提供的模块,称为核心模块;另一类用户编写的模块,叫文件模块。 (1)核心模块部分在Node源代码编译的过程中,编译进了二进制执行文件。...自定义模块指的是非核心模块,也不是路径形式的标识符。它是一种特殊的文件模块,可能一个文件,也可能一个包。这类文件的查找最费时的。...我们尝试创建module_path.js文件,其内容console.log(module.paths),输出结果如下; [ 'C:\\Users\\Administrator\\Desktop\\nodejs...(3)JSON文件的编译,即.json文件 .json文件的编译3种文件模块编译方式中最简单的。

2.4K20

NodeJS如何监听文件的变化?

概述 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

4.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    nodejs之async模块

    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

    91020

    nodejs的path模块

    前言path 模块 nodejs 中用于处理文件/目录路径的一个内置模块,可以看作一个工具箱,提供诸多方法供我们使用,当然都是和路径处理有关的。...同时在前端开发中 path 模块出现的频率也是比较高的,比如配置 webpack 的时候等。本文对该模块中一些常用的方法进行介绍,走,一起学习下吧。...需要注意下,nodejs 中所有的模块(内置,自定义)都需要使用 requier 进行导入,一般导入位置在文件顶部。...dirname,filename__dirname:可以看作 nodejs 中的全局变量,它始终表示当前执行文件所在目录的完整目录名(绝对路径)__filename:可以看作 nodejs 中的全局变量...结语关于nodejs path 模块,我们今天就说到这里了,虽然 api 不是很多,但是 path 模块在前端的使用频率还是非常高的,所以觉得很值得学习了解一下的。

    92430

    NodeJS模块研究 - zlib

    nodejs 的 zlib 模块提供了资源压缩功能。例如在 http 传输过程中常用的 gzip,能大幅度减少网络传输流量,提高速度。...本文将从下面几个方面介绍 zlib 模块和相关知识点: 文件压缩 / 解压 HTTP 中的压缩/解压 压缩算法:RLE 压缩算法:哈夫曼树 文件的压缩/解压 以 gzip 压缩为例,压缩代码如下:...它的原理:记录连续重复数据的出现次数。它的公式:字符 * 出现次数。 例如原数据 AAAAACCPPPPPPPPERRPPP,一共 18 个字节。...压缩比例:12 / 17 = 70.6% RLE 的优点压缩和解压非常快,针对连续出现的多个字符的数据压缩率更高。但对于ABCDE类似的数据,压缩后数据会更大。...无论哪种数据类型(文本文件、图像文件、EXE 文件),都可以采用哈夫曼树进行压缩。 参考链接 Nodejs 文档 30 分钟 HTTP 查漏补缺之 Vary 程序员不得不了解的硬核知识大全

    1.6K31

    NodeJS模块研究 - fs

    node 的fs文档密密麻麻的 api 非常多,毕竟全面支持对文件系统的操作。文档组织的很好,操作基本分为文件操作、目录操作、文件信息、流这个大方面,编程方式也支持同步、异步和 Promise。...本文记录了几个文档中没详细描写的问题,可以更好地串联fs文档思路: 文件描述符 同步、异步与 Promise 目录与目录项 文件信息 stream 文件描述符 文件描述符一个非负整数。...与这个 api 相对应的:fs.readFile(path[, options], callback)。...ReadStream 与 WriteStream 在 nodejs 中,stream 个非常重要的库。很多库的 api 都是基于 stream 来封装的。...但是对于几 GB 的大文件,显然会有问题。 那么针对大文件的解决方案自然:一点点读出来。这就需要用到 stream 了。

    92030

    NodeJS模块研究 - stream

    nodejs 中,实现各种功能,总避免不了和“数据”打交道,这些数据可能 Buffer、字符串、数组等等。但当处理大量数据的时候,如何保证程序的稳健性?如何不让内存爆掉呢?...nodejs 提供了 stream 模块,来让开发者更优雅地处理数据。这需要开发者理解“流”的含义,遵循“流”的相关规范,来进行“流”编程。 相较于其他的模块系列,需要理解的概念偏多。...本文主要从以下几个方面深入 stream 模块: 什么“流”? 流有哪几种类型? 内部缓冲的作用? 流动模式 vs 暂停模式 背压问题 如何产生的? 如何解决背压问题?...但是,处理难度的提高换来的程序性能提升。如果通过fs.readFile()一次性将 100GB 大文件读入内存,那么可能会发生以下几个问题: 内存错误。...下面一个基于 stream,复制大文件的函数: function copyBigFile(src, dest, callback) { if (typeof callback !

    92630

    NodeJS模块研究 - process

    process 模块 nodejs 提供给开发者用来和当前进程交互的工具,它的提供了很多实用的 API。从文档出发,管中窥豹,进一步认识和学习 process 模块: 如何处理命令参数?...开发者可以在 uncaughtException 事件中,清除一些已经分配的资源(文件描述符、句柄等),不推荐在其中重启进程。...需要注意的,它们有些在某些时候同步阻塞的(请见文档)。...深入理解 process.nextTick 我第一次看到 process.nextTick 的时候比较懵的,看文档可以知道,它的用途:把回调函数作为微任务,放入事件循环的任务队列中。...参考文章 Nodejs v12 Stream 文档 Nodejs v12 process 文档 nodejs 学习笔记 一篇文章构建你的 NodeJS 知识体系 Node.js - 进程学习笔记

    1.5K20

    NodeJS模块研究 - os

    读了 os 模块的文档,研究了几个有意思的问题: ? 识别操作系统平台 ? 理解和计算“平均负载” ? 理解和计算“cpu 使用率” ? 理解和计算“内存使用率” ?...推荐使用: os.platform() 理解和计算“平均负载” 平均负载指:单位时间内,系统处于可运行状态和不可中断状态的平均进程数。它和 cpu 使用率没有直接关系。...因为进程分为 2 种,第一种就是“CPU 密集型”,它的 cpu 使用率和平均负载都是高的;第二种“IO 密集型”,它的 cpu 使用率不一定高,但是等待 IO 会造成平均负载高。...平均活跃进程数最理想的状态 cpu 数量=平均负载,如果 cpu 数量 < 平均负载,那么平均负载过高。...借助 nodejs 接口,实现非常简单: function getMemUsage() { return 1 - os.freemem() / os.totalmem(); } 查看运行时间 nodejs

    76110
    领券