Node.js
文章平均质量分 72
Node.js基础
吴声子夜歌
个人学习记录
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Node.js——Express详解(二)
在Express框架中,一个中间件是一个用于处理客户端请求的函数。一个HTTP服务器中可能会使用到各种中间件。当接收到一个客户端请求时,首先将该请求提交给第一个中间件函数,每一个中间件函数内部封装一个next回调函数,在一个中间件函数内部可以判断是否调用next回调函数来处理该客户端请求。一个最简单的中间件的书写方法如下所示。在Express框架中,使用应用程序实例对象的use方法来调用一个中间件,该方法的使用方式如下所示。path:可选,一个字符串,用于指定何种路径应用中间件,默认参数值为“/”。原创 2026-04-06 16:56:05 · 481 阅读 · 0 评论 -
Node.js——Express详解(一)
Express是一个可以在Node.js中使用的MVC框架,该框架现在已经得到了广泛利用,可以使用该框架中的各种特性更为方便、快速地开发出一个完整的Web应用程序。可以使用npm包安装工具来安装Express开发包,命令如下所示。原创 2026-04-06 00:28:40 · 529 阅读 · 0 评论 -
Node.js——dns模块
其中三个主方法分别为用于将一个域名解析为一组DNS记录的resolve方法、用于将一个IP地址转换为一组域名的reverse方法以及用于将一个域名转换为一个IP地址的lookup方法,dns模块中的其余便捷方法均为resolve方法的一种便捷形式。在dns模块中,为resolve方法定制了各种便捷方法,所有这些方法都使用一个domain参数与一个callback参数,这两个参数的用途及指定方法与resolve方法中所使用的domain参数与callback参数的用途及指定方法完全相同。原创 2026-04-05 18:22:25 · 394 阅读 · 0 评论 -
Node.js——操作MySQL数据库
监听query方法返回对象的fields事件,当读取到该表中的所有字段后将所有字段写入应用程序根目录下的message.txt文件中,监听query方法返回对象的result事件,当读取到该表中的一条记录后首先使用Connection对象的pause方法暂停读取后续数据,然后将读取到的记录写入应用程序根目录下的message.txt文件中,然后使用Connection对象的resume方法恢复读取后续数据。在mysql模块中,Connection对象的query方法返回一个可用于处理流数据的对象。原创 2026-04-05 17:37:06 · 516 阅读 · 0 评论 -
Node.js——操作MongoDB
由于MongoDB数据库在JavaScript脚本环境中支持BSON对象(JSON对象的二进制形式)的存取,因此对于数据的存取的效率是非常高的。在MongoDB数据库中,将每一条等待插入的数据记录存储在内存中,因此,该数据库是一种非阻塞型数据库,在需要记载大量日志数据、实时测量数据或实时统计数据时,该数据库可以达到令人满意的效果。由于MongoDB数据库支持在查询语句内部使用JavaScript函数,也大大加强了它读取数据的能力。数据类型说明数据使用示例Array数组Boolean。原创 2026-04-05 14:25:06 · 423 阅读 · 0 评论 -
Node.js——zlib压缩模块
在zlib模块中,除了各种用于创建对数据进行压缩及解压缩处理的对象的方法之外,还提供了表中的各种方法。由于Gunzip对象、Inflate对象、InflateRaw对象与Unzip对象既可用于读取流数据,又可用于写入流数据,因此,可以直接使用这些ReadStream对象的pipe方法读取压缩文件中的数据并将其输出到Gunzip对象、Inflate对象、InflateRaw对象或Unzip对象中,再使用这些对象的pipe方法将使用这些对象进行解压缩后的流数据还原到一个文件中。原创 2026-04-05 00:16:22 · 500 阅读 · 0 评论 -
Node.js——crypto加密模块
在Node.js中,使用OpenSSL类库作为其内部实现加密与解密处理的基础手段,这是因为目前OpenSSL已经成为了一个经过严格测试的可靠的加密与解密算法的实现工具。在Node.js中,OpenSSL类库被封装在crypto模块中,因此开发者可以使用crypto模块来实现各种不同的加密与解密处理。例如,crypto模块中包含了类似MD5或SH-2之类的散列算法。开发者也可以通过crypto模块来实现HMAC运算。在crypto模块中,提供了一些加密方法来实现数据的可靠加密。原创 2026-04-04 23:34:49 · 386 阅读 · 0 评论 -
Node.js——assert断言模块
doesNotThrow方法用于执行一个函数中的代码并判断该函数是否不会抛出一个异常,如果判断为真(函数中不抛出异常),则正常执行该函数,如果判断为假(函数中抛出异常),则抛出该异常或AssertionError异常(根据doesNotThrow方法中的第二个参数而定)。throws方法用于执行一个函数中的代码并判断该函数中是否会抛出一个异常,如果判断结果为真(函数中抛出异常),则不抛出AssertionError异常,如果判断为假(函数中不抛出异常),则抛出AssertionError异常。原创 2026-04-04 22:06:49 · 410 阅读 · 0 评论 -
Node.js——domain模块处理错误(不推荐)
众所周知,在JavaScript脚本代码中,虽然可以使用try…catch机制来捕捉同步方法中抛出的错误,但是不能使用try…catch机制来捕捉异步方法中抛出的错误。例如,由于在下面这段代码中使用了同步模式的readFileSync方法读取文件,因此可以使用try…catch机制来捕捉在执行该方法时抛出的错误。try{//在控制台中输出文件内容catch(ex){console.log('读取文件时发生错误。');现在查看如下所示的代码。原创 2026-04-04 21:34:51 · 462 阅读 · 0 评论 -
Node.js——Buffer
在Node.js中,Buffer类是一个可以在任何模块中被利用的全局类,不需要为该类的使用而加载任何模块。Node.js 默认使用 UTF-8。原创 2026-04-04 15:13:18 · 118 阅读 · 0 评论 -
Node.js——调试器
在命令行窗口中,可以使用“node inspect”命令来启用调试器,代码如下所示。在命令行窗口中使用“node debug”命令调试该脚本文件,执行结果如图所示。原创 2026-04-04 14:22:16 · 91 阅读 · 0 评论 -
Node.js——异常处理
在开发程序时,如果遇到需要处理多种异常信息的情况,可以在一个try代码块后面跟多个catch代码块,这里需要注意的是,如果使用了多个catch代码块,则catch代码块中的异常类顺序是先子类后父类。finally的形式,但需要注意的是,try代码块后必须至少跟一个catch或finally代码块,不能只写try。使用process方式和domain方式都可以捕获异步代码块中的异常,但process方式只适用于记录异常信息的场合,因此,在捕获异步代码库中的异常时,推荐使用domain方式。原创 2026-04-03 23:24:39 · 364 阅读 · 0 评论 -
Node.js——集成MySQL实例
在实现之前,首先需要准备数据库及数据表。运行程序,启动Node.js服务器,然后在浏览器中打开http://127.0.0.1:52273/,在图书列表页面单击“添加图书”超链接,打开book-insert.html页面,在该页面中输入要添加的图书信息后,单击“提交”按钮,即可完成图书的添加操作,如图所示。在index.js文件中,首先读取boot-insert.html模板文件,然后获取POST请求中提交的要添加的图书信息,使用数据库连接对象的query()方法执行SQL添加语句。原创 2026-04-03 22:32:46 · 406 阅读 · 0 评论 -
Node.js——Express框架
新建一个.js文件,导入express模块,使用express()方法创建一个Web服务器,然后在use()方法中使用request.header(‘User-Agent’)方法获取请求客户端的User-Agent信息,通过判断该信息确定用户使用的浏览器类型。例如,新建一个.js文件,使用express模块创建一个Web服务器,然后使用两次use()方法设置中间件,其中第一个use()方法中,定义了两个变量,并通过next()设置了中间件,最后在第二个use()方法中使用第一个use()方法中定义的变量。原创 2026-04-03 19:05:09 · 438 阅读 · 0 评论 -
Node.js——Web模板引擎
在引用变量时,需要在引用位置加上=号,否则会默认将变量名当成普通字符串使用。如果想要将变量与其他字符串常量或变量连接在一起,需要使用#{},该符号会对大括号内的变量进行求值和转义,最终得到输出的内容。if enableelse注意上面代码中第一行最后的“.”符号。原创 2026-04-03 13:35:04 · 416 阅读 · 0 评论 -
Node.js——WebSocket
Node.js中主要通过socket.io模块进行WebSocket网络编程,该模块提供了服务器端和客户端相关的组件,可以很方便地为应用加入WebSocket支持,并且支持不同的浏览器。WebSocket是从HTML5开始提供的一种浏览器与服务器间进行通信的网络技术。使用WebSocket时,浏览器和服务器只需要做一个握手的动作,然后浏览器和服务器之间就形成了一条快速通道,两者之间就可以直接进行数据的互相传送。使用socket.io模块可以很方便地实现WebSocket网络编程,使用之前,首先需要通过npm原创 2026-04-02 00:57:46 · 500 阅读 · 0 评论 -
Node.js——Web相关模块
但是实际开发中,不可能把所有内容都写在end()方法中,比如我们可以响应一个编写好的HTML文件,可以使用fs模块的readFile()方法读取其内容,然后通过end()方法去响应读取到的HTML文件内容并返回给客户端。例如,首先创建一个server服务对象,并使用其listen()方法启动一个端口号为52273的本地地址,运行10秒后,使用server服务对象的close()方法关闭服务器。创建js.js文件,在该文件中定义4个路径字符串,然后通过resolve()方法,将其解析为不同的绝对路径。原创 2026-04-01 18:55:03 · 448 阅读 · 0 评论 -
Node.js——I/O流操作
程序中的流是一个抽象概念,当程序需要从某个数据源读取数据时,就会开启一个数据流,数据源可以是文件、内存或者网络等,而当程序将数据写入某个数据源时,也会开启一个数据流,而数据源的目的地也可以是文件、内存或者网络等。以文件流为例,当需要读取一个文件时,如果使用fs模块的readFile()方法读取,程序会将该文件的内容视为一个整体,为其分配缓存区并一次性将内容读取到缓存区中,在这期间,Node.js将不能执行任何其他处理,这就可能导致一个问题,即如果文件很大,会耗费较多的时间。原创 2026-04-01 17:18:35 · 403 阅读 · 0 评论 -
Node.js——异步编程与回调
Node.js异步编程的直接体现就是回调函数,Node.js中使用了大量的回调函数,Node.js中的大部分API都支持回调函数,如第7章中讲解过的操作文件的方法,基本上都同时提供了同步和异步操作的方法,并且默认使用的都是异步操作,在异步操作方法中都需要传递一个callback回调函数。从上面的示例可以看出,then方法中的函数就类似于一个回调函数,但它能够在异步操作完成之后被执行,这就是Promise的好处,它能够将原来的回调函数分离出来,在异步操作执行完后,再去执行回调函数。原创 2026-04-01 15:32:17 · 423 阅读 · 0 评论 -
Node.js——os操作系统模块
使用os模块之前首先需要引入该模块,代码如下:1.1、获取系统剩余内存通过os模块的freemem()方法可以获取空闲的系统内存量,该方法返回一个整数(单位:字节)。1.2、获取系统总内存通过os模块的totalmem()方法可以获取系统的总内存量,该方法返回一个整数(单位:字节)。示例:显示系统的内存使用情况2、获取网络相关信息使用os模块可以获取计算机的网络信息,这需要通过networkInterfaces()方法实现,该方法的返回值是一个对象,该对象包含已分配了网络地址的网络接原创 2026-03-31 23:33:31 · 441 阅读 · 0 评论 -
Node.js——fs文件系统模块
fs模块内置许多方法,用以对文件进行相关操作。具体使用时,有的方法如果发现文件不存在,可以创建文件,而有的方法则不能,这时就会出现错误,为了避免这类错误,在对文件进行操作之前,一般都需要检测文件是否存在,并且根据需要检查文件的可读或可写等属性。fs模块提供对文件与目录进行操作的方法时,通常分别提供了同步方法和异步方法,其中,同步方法名通常是在异步方法名后面加了Sync后缀,如本节中所讲的access()方法的对应同步方法为accessSync(),但除了文件读写操作,一般都默认使用异步方法。原创 2026-03-31 23:00:01 · 364 阅读 · 0 评论 -
Node.js——util工具模块
util模块是Node.js的内置模块,它提供了常用方法的集合,这主要是为了弥补核心JavaScript功能过于精简的不足,该模块的主要目的是满足Node.js内部API的需求。:字符串格式化:将任意对象转换为字符串,对象深度查看(调试神器):将 Node.js 回调风格函数 转为 Promise:Promise → 回调util.types:精准类型判断:标记废弃方法:用于实现原型继承(已不推荐):深度严格比较(替代 assert.deepStrictEqual):获取系统错误名。原创 2026-03-31 16:22:09 · 453 阅读 · 0 评论 -
Node.js——事件的监听与触发
使用前面介绍的on方法添加事件时,事件一旦添加就会一直存在,但如果遇到只想执行一次监听事件的情况,使用on方法就无能为力了,这时可以使用EventEmitter对象的once方法,该方法用来将单次监听器listener添加到名为eventName的事件,当eventName事件下次触发时,监听器会先被移除,然后再调用。上面的代码中,使用EventEmitter对象添加监听事件和触发监听事件的代码都放在了一个文件中,但实际应用时,通常会把添加监听事件的模块和触发监听事件的模块分开。原创 2026-03-31 14:44:26 · 447 阅读 · 0 评论 -
Node.js——全局对象和模块
使用setInterval()方法设置定时器与使用setTimeout()方法设置定时器的区别是,使用setInterval()方法设置的定时器可以多次调用指定的方法,而使用setTimeout()方法设置的定时器只能调用一次指定的方法。Node.js主要使用模块系统进行编程,所谓模块,是指为了方便调用功能,预先将相关方法和属性封装在一起的集合体。全局,即程序中任何地方都可以使用,Node.js内置了多个全局变量、全局对象和全局函数,在开发Node.js程序时都可以使用,下面分别对它们进行讲解。原创 2026-03-31 14:09:31 · 396 阅读 · 0 评论 -
Node.js——npm包管理器
npm是Node.js的标准软件包管理器,其在2020年3月17日被GitHub收购,而且保证永久免费。在npm仓库中有超过130万个软件包,这使npm成为世界上最大的单一语言代码仓库,并且它几乎有可用于一切的软件包。使用npm可以解决Node.js代码部署上的很多问题,常见的使用场景有以下几种。允许用户从npm服务器下载第三方包到本地使用。允许用户从npm服务器下载并安装别人编写的命令行程序到本地使用。允许用户将自己编写的包或命令行程序上传到npm服务器供别人使用。原创 2026-03-30 23:06:35 · 314 阅读 · 0 评论 -
Node.js——概述
1、简介2、工作原理3、优缺点4、应用5、示例Node.js(简称Node)是一个开源的、基于Chrome V8引擎的服务器端JavaScript运行时环境,可以在浏览器环境以外的主机上解释和运行JavaScript代码,它发布于2009年5月,由谷歌工程师Ryan Dahl开发。Node.js支持现在大部分的主流浏览器,包括Chrome、MicrosoftEdge和Opera等。Node.js主要由标准库、中间层和底层库这3部分组成,其架构如图所示。标准库(Node standard library)原创 2026-03-30 22:02:48 · 501 阅读 · 0 评论
分享