首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >读书笔记-《了不起的nodejs》-fs、stream

读书笔记-《了不起的nodejs》-fs、stream

作者头像
用户3258338
发布于 2019-07-19 09:05:49
发布于 2019-07-19 09:05:49
54500
代码可运行
举报
运行总次数:0
代码可运行

我们终其一生就是要摆脱他人的期待,找到真实的自己

超喜欢这样的光线~

对CLI一探究竟

argv

process.argv包含了所有Node程序运行时的参数值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// example.js
console.log(process.argv);

看一下运行结果:

第一个元素始终是node,第二个元素始终是执行的文件路径,紧接着是命令行后紧跟着的参数。

所以要获得参数要将前两个元素去除掉。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// example.js
console.log(process.argv.slice(2));

工作目录

__dirname :获取执行文件时该文件在文件系统中所在的目录

process.cwd :获取程序运行时当前工作目录(current work directory,我是这样理解这个缩写的)。

环境变量

Node允许通过process.env变量来轻松访问shell环境的变量。

经常用到的就是NODE_env

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
process.env.NODE_ENV = 'production'

来控制程序是运行在生产环境还是开发环境。

退出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
process.exit(1)

ANSI转义码

在文本终端控制格式、颜色以及其他输出选项,可以用ANSI转义码。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// example.js
console.log('\033[90mHello world \033[39mHello World');
  • \033:表示转义序列的开始
  • [ : 开始颜色设置
  • 90: 前景色为亮灰色
  • m :颜色设置结束

对fs一探究竟

Stream

为了理解stream的威力,先来看两个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var fs = require('fs');
fs.readFile('a.txt',function(err,contents){
    //对文件进行处理
})

上面的例子必须等到整个文件读取完毕、载入RAM、可用的情况下才会触发。

可是如果一个文件超级大,那么岂不是要等很长时间,这时候stream就能发挥作用了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var stream = fs.createReadStream('a.txt');
stream.on('data',function(chunk){
    //对文件部分内容进行处理
})
stream.on('end',function(chunk){
    //文件读取完毕
})

stream可以读取可变大小的文件,当每次读取完之后会触发回调函数。

监视

node允许对文件和目录进行监视。

?:查找工作目录下的所有css文件,监视它是否发生改变,

发生改变,就将改文件名输出到控制台

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var fs = require('fs');
var files = fs.readdirSync(process.cwd());
files.forEach(function(file){
    if(/\.css/.test(file)){
        fs.watchFile(process.cwd()+'/'+file,function(){
            console.log('-','changed!')
        })
    }
})

到这里我们已经了一下Node的一些API。其中Stream和process都是非常重要的,所以各位宝宝,如果没有特别get的话就再查查资料吧!

下一章我们要学习TCP喽!

愿我们有能力不向生活缴械投降---Lin

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 女程序员的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
读书笔记-《了不起的node.js》-4
还是读书笔记,但是这个不是理论知识喽,47-57页带着我们编写了首个node程序;
用户3258338
2019/07/19
7930
读书笔记-《了不起的node.js》-4
看了就会的 Node.js 三大基础模块常用 API
在日常使用 Node 进行开发的时候,会使用到一些文件系统、路径操作等基础 API,这里整理一下,方便大家理解和直接使用。
山月
2021/06/16
9730
gulp 的运作方式分析
说到 gulp 的运作方式,就不得不提到 vinyl 和 Node.js 的 stream。
疯狂的技术宅
2020/12/31
5300
Node.js 常见面试题速查
process 是一个全局变量,它提供当前 Node.js 进程的有关信息,而 process.argv 属性则返回一个数组,数组中的信息包括启动 Node.js 进程时的命令行参数
Cellinlab
2023/05/17
9270
读书笔记-《了不起的nodejs》-TCP
TCP是一个面向连接的协议,它保证了两台计算机之间数据传输的可靠性。如今的网络应用都是用TCP/IP协议进行通信的。
用户3258338
2019/07/19
7610
读书笔记-《了不起的nodejs》-TCP
nodejs process进程
在Node.js中,process是一个全局对象,提供了许多与当前进程相关的方法和属性。
心安事随
2024/07/29
1810
从零撸一个CLI命令行脚手架工具
我想大部分同学肯定都是这样回答的:现在社区都有开箱即用的脚手架,像vue-cli、create-react-app这种,我们直接用脚手架来创建项目就可以了啊。
前端森林
2021/02/03
1.1K0
从零撸一个CLI命令行脚手架工具
node.js如何制作命令行工具(一)
之前使用过一些全局安装的NPM包,安装完之后,可以通过其提供的命令,完成一些任务。比如Fis3,可以通过fis3 server start 开启fis的静态文件服务,通过fis3 release开启文件编译与发布;还有vue-cli,可以通过vue init webpack my-project来初始化vue+webpack的项目基础配置。最近有一个需求,需要写一个类似vue-cli的NPM包,通过命令行操作实现项目初始配置,所以就查看了相关资料,学习了一下如何使用node来生成自己的命令。 编写命令行 命
用户1217459
2018/01/31
1.9K0
webpack深入浅出实战系列
https://github.com/luoxue-victor/learn_webpack/
前端迷
2020/02/19
1.7K0
webpack深入浅出实战系列
技术 | Webpack迁移到Rollup
最近React悄悄把构建工具从Webpack换成了Rollup,大家可以关注这个PR:https://github.com/facebook/react/pull/9327。
icepy
2019/06/24
1.3K0
自制前端脚手架
摘要总结:本文主要介绍了一种基于Node.js的脚手架框架,该框架可以快速生成项目结构,并支持自定义模板,具有易用性好、可扩展性强、可维护性好的特点。同时,本文还介绍了一种基于Node.js的脚手架框架生成方法,该方法可以快速生成项目结构,并支持自定义模板,具有易用性好、可扩展性强、可维护性好的特点。
IMWeb前端团队
2017/12/29
1.5K0
自制前端脚手架
前端脚手架构建实践
在前端工程化过程中,为了解决多项目中,相似度高的工作,便诞生许多前端脚手架,这里记录下自己实现一个简易前端脚手架过程的实践。主要是解决多个页面相似内容的复制粘贴问题,功能类似于Webstorm的Live template,或者Vscode的Snippets。
河马嘴不大
2022/12/24
1.2K0
前端脚手架构建实践
「前端工程化」从0-1搭建react,ts脚手架(自动化收集,进程通信,深拷贝文件等全流程)
①node实现终端命令行 ②终端命令行交互 ③深copy整个文件夹 ④nodejs执行终端命令 如 npm install ⑤建立子进程通信 ⑥webpack底层操作,启动webpack,合并配置项 ⑦编写一个plugin,理解各阶段 ⑧require.context实现前端自动化
用户6835371
2021/06/01
2.1K0
「前端工程化」从0-1搭建react,ts脚手架(自动化收集,进程通信,深拷贝文件等全流程)
Week5-脚手架创建项目流程设计和开发
注:由于我本地之前已经配好了,所以我本地的启动方式为:mongod --config /usr/local/etc/mongod.conf 查看mongodb.conf文件,我本地的dbpath路径为:/usr/local/var/mongodb 安装第三方工具:Robot 3T 连接到本地后:
六个周
2022/10/28
8100
Week5-脚手架创建项目流程设计和开发
NodeJS模块研究 - process
process 模块是 nodejs 提供给开发者用来和当前进程交互的工具,它的提供了很多实用的 API。从文档出发,管中窥豹,进一步认识和学习 process 模块:
心谭博客
2020/04/21
1.7K0
Node.js 多进程(下)
child_process.spawn 使用指定的命令行参数创建新进程,语法格式如下:
陈不成i
2021/07/13
5430
这里有一份Node.js入门指南和实践,请注意查收
JS 是脚本语言,脚本语言都需要一个解析器才能运行。对于写在 HTML 页面里的 JS,浏览器充当了解析器的角色。而对于需要独立运行的 JS,NodeJS 就是一个解析器。
null仔
2020/02/28
3.8K0
这里有一份Node.js入门指南和实践,请注意查收
我掌握了少数人才知道持续集成系统的日志密码
前段时间在使用 Travis CI 的时候发现它的部署日志包含了很多带色彩的日志。
秋风的笔记
2021/10/26
7060
Nodejs基础:stream模块入门介绍与使用
模块概览 nodejs的核心模块,基本上都是stream的的实例,比如process.stdout、http.clientRequest。 对于大部分的nodejs开发者来说,平常并不会直接用到str
IMWeb前端团队
2017/12/28
1.1K0
《前端那些事》从0到1开发简单脚手架
上一篇树酱讲《前端工程化那些事》,聊到脚手架,不过时间比较仓促,导致内容较少,而在我实践开发中,随着新项目愈来愈多,脚手架工具就起到提高效能的作用,借此机会跟小伙伴们分享下我是如何从0到1开发一个简单脚手架
树酱
2020/07/03
1.6K0
《前端那些事》从0到1开发简单脚手架
相关推荐
读书笔记-《了不起的node.js》-4
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档