
nodejs
文章平均质量分 91
node学习
程序员阿甘
这个作者很懒,什么都没留下…
展开
-
Node.js基础
目录Node.js是啥Node.js和浏览器有啥联系和区别Node.js的三大核心Node.js的模块化规范(commonJS)Node.js的软件包管理(npm)Node.js的异步编程(异步编程方案+Event Loop)Node.js是啥Node.js 并不是一个 js 文件或者 js 库。Node.js 是一个JavaScript代码运行环境,它的底层使用了Chrom v8 引擎,所以支持ECMAScript的语法。Node.js和浏览器有啥联系和区别原创 2022-01-04 13:44:27 · 1912 阅读 · 0 评论 -
Node.js 非阻塞式I/O的理解
Node.js 设计之初的愿望,就是打造一个高性能的,轻量级的 Web 服务器。而传统Web服务器,如Apache Tomcat,该服务器是基于Java语言开发,该语言支持多线程,早期只支持阻塞式I/O原创 2022-01-05 20:34:14 · 2192 阅读 · 0 评论 -
Node.js 事件驱动
Node.js 最主要的两个亮点就是异步I/O 和 事件驱动。那么啥是事件驱动呢?目录浏览器的事件驱动addEventListner和removeEventListener事件绑定三要素浏览器的事件绑定中的回调函数是同步执行的事件驱动与发布订阅模式发布订阅模式浏览器端事件驱动模拟实现Node.js 的事件驱动Node.js的events模块下的EventEmitter关于on的注意事项关于once使用注意事项关于emit使用注意事项关于off的使.原创 2022-01-16 22:54:01 · 1519 阅读 · 0 评论 -
Node.js Buffer
I/O 操作中传输数据的格式Node.js 最重要的两个模块就是 文件系统模块fs 和 网络模块(tcp, udp, http, https),fs模块用于Node.js 搭建的web服务器进行本地文件 I/O 操作,网络模块用于 Node web 服务器进行网络 I/O 操作。二者都属于 Node.js 的异步 I/O 操作范畴。但是在讨论 Node 异步I/O 的具体实现模块前,我们需要了解 I/O 的底层数据传输方式。我们知道 I/O 指的是 输入/输出,具体一点就是 “数据”的 输入/输原创 2022-01-18 17:05:09 · 1706 阅读 · 0 评论 -
Node.js fs模块(一)文件基本操作
文件基础知识Node.js fs模块,全称是file system模块,即文件系统模块,顾名思义,这个模块是用来操作文件。而我们常用的文件操作有:打开文件,关闭文件,读取文件数据,写入数据到文件,创建文件夹(目录),删除文件夹(目录),移动文件到文件夹(目录)中。但是在讨论文件操作之前,我们必须要了解一些文件系统的基本知识。文件是啥?其实这个问题不能算是问题,无论是windows系统,还是linux系统,进入之后,我们最常操作的就是文件,比如打开一个txt文本文件,打开一个jpg图片文件原创 2022-01-18 18:56:51 · 2762 阅读 · 0 评论 -
Node.js fs模块(二)读写文件
Node.js fs模块(一)_qfc_128220的博客-优快云博客在前面一节中,我们介绍了fs.open,fs.read,fs.write,fs.close等方法的使用,但是我们发现实操起来比较繁琐,主要难点在于 读写文件前,需要先打开文件获取fd,并且需要设置好文件操作符,以及文件权限位,否则很容易导致读写过程发生错误,并且读写完文件后,也要人为关闭文件描述符fd,所以整体上很公式化。另外还有需要人为准备缓冲区,并控制缓冲区大小。所以 Node.js 也提供了整合型方法,来实现一个方法实现文原创 2022-01-19 11:32:02 · 4188 阅读 · 0 评论 -
Node.js fs模块(三)目录操作
Node.js fs模块(二)_qfc_128220的博客-优快云博客前面已经介绍了fs模块进行文件读写的基本操作,接下来我们会学习fs模块进行文件夹的操作,如创建文件夹,删除文件夹,删除指定文件,读取文件夹内容,获取文件夹及文件信息,判断文件夹或文件是否有操作权限。fs.mkdir(path, options, callback)创建目录形参解析path:传入将要被创建的文件夹路径options.recursive:表示是否创建父目录callback(err, pat原创 2022-01-19 16:15:42 · 2680 阅读 · 0 评论 -
Node.js stream模块(一)可读流
Buffer模式fs.read读取文件数据时,我们需要先申请一个缓冲区,用于暂存从磁盘中读取到的文件数据,当磁盘中文件数据全部读取到缓冲区后,我们再从缓冲区中取出数据进行处理,这种读取文件的方式其实叫Buffer模式,即一次性读取。但是想要实现一次性读取面临两个问题:1、我们无法预测被读取的文件大小,即无法初始化缓冲区的大小,默认是64KB,但是无法预知是大了还是小了2、如果我们可以预知了文件的大小,比如1G,但是我们很难一次性申请1G内存给缓冲区,因为这样会造成系统内存紧张,引发内存溢原创 2022-01-21 12:55:39 · 2050 阅读 · 0 评论 -
Node.js fs模块(四)文件可读流
Node.js stream模块 之 可读流_qfc_128220的博客-优快云博客前面一节介绍了stream模块下的可读流,我知道了可读流可以在保证内存友好,及时响应消费诉求的前提下,实现大体积数据传输。而相比之下,fs模块的fs.readFile就显得不太行了。所以fs模块中fs.ReadStream类通过继承stream.Readable,重写了_read方法实现了文件可读流。创建文件可读流const fs = require('fs')const rs = fs.create原创 2022-01-21 18:37:24 · 2157 阅读 · 0 评论 -
Node.js stream模块(二)可写流
Node.js stream模块 之 可读流_qfc_128220的博客-优快云博客前面介绍了stream模块的可读流stream.Readable,通过可读流的工作模式,我们可以知道可读流其实是数据生产者,而且必须要有消费者通过监听data事件或者监听readable事件调用read方法去消费数据,才能触发可读流进行数据生产。即消费拉动生产。我们需要搞清楚上面程序中,谁是消费者。监听data事件?data事件回调函数?console.log?其实纯粹的消费者定义,应该是 单纯消费数据原创 2022-01-23 00:44:35 · 1327 阅读 · 0 评论 -
Node.js fs模块(五)文件可写流
之前介绍了fs模块的文件可读流,本节继续介绍fs模块的文件可写流。fs.WriteStream继承了stream.Writable,并重写了_write方法,实现了文件可写流我们一般通过fs.createWriteStream来创建一个文件可写流对象。创建文件可写流对象const fs = require('fs')const path = require('path')const ws = fs.createWriteStream(path.join(__dirname, 't原创 2022-01-23 15:56:33 · 2388 阅读 · 0 评论 -
Node.js stream模块(三)背压机制
我们知道 可读流是作为数据生产者,而可写流作为数据消费者。那么二者必然是可以结合使用的。即可读流生产出来的数据给可写流消费。我们这里使用文件可读流和文件可写流来模拟这种情况:实现很简单,可读流对象通过data事件可以进入流动模式,还是源源不断地生产数据,而可写流对象通过write方法可以写入数据并消费。所以二者结合就实现了生产与消费地结合。但是我们注意到:文件可读流的缓冲区水位线默认是64KB,而文件可写流的缓冲区水位线默认是16KB。为何官方要设计出这种差异呢?其实这和磁盘文件的读原创 2022-01-23 16:47:59 · 2455 阅读 · 0 评论 -
Node.js stream模块(四)双工流和转换流
stream模块除了可读流Readable,可写流Writable,还有双工流Duplex和转换流Transform。Duplex所谓双工流,就是既能作为可读流,也能作为可写流。我们想要实现一个双工流,就相当于实现了一个可读流和可写流。通常,我们需要自定义类去继承Duplex,并重写_read和_write方法。const { Duplex } = require('stream')class MyDuplex extends Duplex { constructor(so原创 2022-01-24 15:29:12 · 1345 阅读 · 0 评论 -
Node.js http模块
我们知道 Node.js 最吸引人的功能是:可以创建一个轻量的,基于异步I/O的,以及事件驱动的 Web 服务器。所谓Web服务器,其实就是http服务器,即可以接收来自客户端的http请求报文,并应答http响应报文给客户端。创建Web服务器Node.js提供了极其简单的程序来快速地创建一个Web服务器。// 引入http模块const http = require('http');// 创建http服务器const app = http.createServer()//原创 2022-01-25 11:12:47 · 1378 阅读 · 0 评论 -
Node.js express模块(一)
express是一个基于Node.js的内置http模块开发的第三方模块。express相较于原生的http模块做了较好的扩展工作,让开发者可以高效地进行服务器业务开发。express的基本使用const express = require('express')const app = express()app.get('/', (req, res) => { res.status(200).send({ msg: 'Hello World' })原创 2022-02-03 14:20:44 · 1527 阅读 · 0 评论 -
Node.js express模块(二)
Node.js express模块(一)_qfc_128220的博客-优快云博客通过前面对比http模块,express模块在开发一个简单服务器的体验,可以发现express模块完全碾压了http模块,接下来我们详细学习下express模块。认识express模块express模块也是用来开发web服务器的,下面代码就是基于express开发一个简单的服务器const express = require('express')const app = express()app.l原创 2022-02-04 22:48:06 · 1583 阅读 · 0 评论 -
Node.js RESTful API设计规范
Node.js 结合express模块可以用于快速开发一个轻量的,易于扩展的Web服务器。但是由于 Node.js 处理JavaScript程序的线程只有一个v8主线程,所以不适合处理CPU密集型的任务。这导致了 Node.js 作为后端服务器的竞争力降低。但是 Node.js 从其命名就可以看出它的理想是作为网络中的一个“节点",而不是一个"端"。节点更注重的是数据的传递,端注重的是数据的处理。目前,市场对于Node.js的定位更多体现在:开发RESTful API服务器,开发SSR 服务端渲原创 2022-02-08 17:32:47 · 857 阅读 · 0 评论