![](https://img-blog.csdnimg.cn/20210730105609677.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Node.js
Node.js学习之路
Data菌
这个作者很懒,什么都没留下…
展开
-
Node.js:服务器程序部署与运行管理
服务器程序开发和测试完成后,就需要发布和部署运行。本篇先介绍如何部署到本地自己的服务器上并管理。1.Node.js安装:根据目标服务器的操作系统类型和版本,去Node.js官网选择合适的Node.js进行安装。安装过程请参考之前文章进行安装。命令验证是否安装成功。...原创 2022-01-07 15:42:15 · 1655 阅读 · 0 评论 -
Node.js:express框架之错误处理
错误处理是指Express如何捕获和处理同步和异步发生的错误。Express内置默认的错误处理程序,开发人员也可以编写自己的错误处理程序。/** * express框架的路由与中间件 */const express = require("express");const path = require("path");const fs = require("fs");const server = express();server.get("/",(req,res,next)=>原创 2022-01-05 15:45:14 · 2042 阅读 · 5 评论 -
Node.js:Express框架之视图与模板引擎
Express支持通过模板引擎在应用程序中使用静态模板文件。在程序运行时,模板引擎使用实际的值替换模板文件中的变量,并将模板转换为要发送给客户端的HTML文件。这种方法使得设计HTML页面变得更加容易,轻松实现数据与视图分离,有利于大型项目中的前后端开发的分工协作。Express推荐的模板引擎:Pug、Mustache、EJS。本篇介绍Pug。...原创 2022-01-05 14:59:30 · 628 阅读 · 0 评论 -
Node.js:Express框架之路由与中间件
上篇介绍了express和express-generator模块的安装以及利用generator应用生成工具自动生成标准的express应用程序。本篇介绍express框架的路由和中间件。路由:决定应用程序如何响应客户端对特定端点的请求,端点可以是一个URI(或路径)和特定的HTTP请求方法(GET、POST等)。根据请求的URI和HTTP方法来决定请求的处理方式。路由由URI、HTTP方法(GET、POST等)和若干回调函数组成:app.method(path, [callback...], call原创 2022-01-05 10:43:40 · 692 阅读 · 0 评论 -
Node.js框架:Express简介、模块的安装以及express应用程序的自动生成
目前有很多成熟高效企业级的流行框架供我们使用,我们开发项目不必造轮子,一切从头开始。根据项目特点需求选择适合的框架,能大大提升我们开发地效率、缩短周期以及保证项目的质量等。市面上流行框架有Express/Koa/Hapi/Flatiron/Sails/Geddy/Restify/LoopBack/Meteor/Mean.IO/SocketStream/DerbyEgg等。本篇开始介绍经典框架Express。Express是一个简洁而灵活的Web应用程序开发框架,为Web和移动应用程序提供一系列强大.原创 2022-01-04 19:22:32 · 706 阅读 · 0 评论 -
Node.js-MongoDB数据库:Mongoose对象模型库之子文档
原创 2022-01-04 14:45:13 · 1013 阅读 · 0 评论 -
Node.js-MongoDB数据库:Mongoose对象模型库操作之中间件及pre和post钩子
本篇介绍中间件的概念,中间件称前置(pre)和后置(post)钩子,在模式(Schema)级别指定,有4种类型的中间件:文档(document)中间件包括init/validate/save/remove,模型(model)中间件包括insertMany,聚合(aggregate)中间件包括aggregate和查询(query )中间件包括count/find/findOne/findOneAndRemove/findOneAndUpdate/remove/update/updateOne/updateMa原创 2022-01-04 11:24:15 · 1102 阅读 · 0 评论 -
Node.js-MongoDB数据库:Mongoose对象模型库之数据验证
对于插入数据库的数据,一般情况下只限定数据类型即可,但是某些特殊情况下,需要进一步的安全检查限制如值的范围、有效性、枚举限定等等。本篇介绍Mongoose对象数据库模型内置的数据验证和自定义扩展数据验证方式。/** * MongoDB数据库操作:mongoose对象模型库之数据验证 * 1.内置验证 * 2.自定义验证 */const mongoose = require("mongoose");const { compileFunction } = require("vm");//与原创 2021-12-31 18:35:09 · 806 阅读 · 0 评论 -
Node.js-MongoDB数据库:Mongoose对象模型库文档操作自定义扩展
上篇介绍了Mongoose对象模型库的内置的基本文档操作:增删改查。本篇将介绍用户根据需要可以自定义扩展文档操作。代码如下:/** * MongoDB数据库操作:mongoose对象模型库之文档操作方法自定义扩展 * */const mongoose = require("mongoose");const { compileFunction } = require("vm");//与数据库建立连接mongoose.connect("mongodb://127.0.0.1:2701原创 2021-12-31 17:53:20 · 746 阅读 · 0 评论 -
Node.js-MongoDB数据库:Mongoose对象模型库操作连接以及增删改查
上篇介绍了使用原生了驱动操作MongoDB数据库,本篇将介绍使用Mongoose对象模型库来操作。Mongoose是针对Node.js异步环境为MongoDB数据库提供的对象模型库。Mongoose基于官方的原生MongoDB驱动node- mongodb-native实现,封装了MongoDB数据的常用操作方法,使Node.js程序操作MongoDB数据库变得更加灵活简单。先安装mongoose模块。代码如下:【前提保证启动MongoDB数据库】,【注意】通过注释部分代码来测试特定..原创 2021-12-31 16:55:44 · 886 阅读 · 1 评论 -
Node.js-MongoDB数据库:连接、增删改查操作
本篇介绍使用原生驱动连接和操作MongoDB数据库。先安装mongodb驱动模块。代码如下:【注意:先确认MongoDB数据库是启动的】【注意】注释部分代码测试特定的API功能。/** * MongoDB数据库操作 */const mongodb = require("mongodb");const conn = mongodb.MongoClient.connect("mongodb://localhost:27017",{useNewUrlParser:tr..原创 2021-12-31 11:54:32 · 440 阅读 · 0 评论 -
Node.js-MongoDB数据库:介绍、安装与界面化操作
前面介绍了MySQL关系型数据库操作,本篇开始陆续介绍MongoDB数据库。这两种类型数据库有什么区别呢?MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。比较适合:1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化.原创 2021-12-30 20:07:00 · 237 阅读 · 0 评论 -
Node.js-使用Sequelize框架操作MySQL数据库
Sequelize是一款基于Promise的支持异步操作的Node.js ORM框架,支持Postgres、MySQL、SQLite和Microsoft SQL Server等多种数据库,具有强大的事务支持、关联关系、读取和复制等功能,很适合作为Node.js后端数据库的存储接口,有助于提高Node.js应用程序的开发效率。先安装sequelize和mysql2模块测试代码如下:【注意】通过屏蔽部分代码,测试特定功能,因为每项操作是异步的,执行顺序不定。/** * MySQ...原创 2021-12-30 16:07:26 · 2040 阅读 · 1 评论 -
Node.js异步方式操作MySQL数据
上篇介绍了MySQL的基本的操作API,又在某篇介绍了Node.js的异步编程方式。本篇介绍如何异步操作MySQL数据库。/** * MySQL数据库异步操作 */const util = require("util");const sql = require("mysql2");const co = require("co");//加载数据库驱动模块const sqlPromise = require("mysql2/promise");//------使用sql2/pro原创 2021-12-30 11:39:47 · 1238 阅读 · 0 评论 -
Nodde.js的异步编程方式
对于复杂的异步执行任务可能会嵌套很多层回调函数,这样编写不够“优雅”,要是用同步方式编写异步代码的解决方案实质上只是改变了代码编写方式,简化和优化代码的写法,使开发人员以更优雅的方式编写异步代码,以解决异步代码的流程控制问题,降低了异步编程难度。但程序本质上还是异步执行的,这些方案并没有对程序本身进行优化,也没有提高应用程序性能。Promise对象代表一个异步操作,有以下3种状态:等待(Pending):初始状态,没有实现也没有被拒绝;实现(Fulfilled):操作已成功完成;被拒绝(Rejecte.原创 2021-12-30 10:28:07 · 558 阅读 · 0 评论 -
Node.js-MySQL数据库:与MySQL连接、增删改查
上篇介绍了MySQL数据库的安装,本篇介绍Node.js服务器如何连接MySQL,并实现增删改查数据库表记录。新建项目,并安装mysql2数据库驱动模块。原创 2021-12-29 15:02:39 · 285 阅读 · 0 评论 -
Node.js-MySQL数据库操作:安装MySQL
服务器操作数据库是经常的操作,因此本篇开始介绍Node.js服务器经常使用的数据库:一个是MySQL,另外一个是MongoDB。本篇介绍MySQL的安装与使用。进入MySQL官网下载MySQL。下载需要的MySQL版本。点击安装MySQL Workbench是管理MySQL的图形界面工具,用户可以界面化操作数据库。点击运行Workbench关于在workbench中如何创建数据库...原创 2021-12-28 19:05:21 · 613 阅读 · 0 评论 -
Node.js网络通信方式:WebSocket协议
上篇介绍了Http协议,本篇介绍WebSocket通信协议。与Http协议“被动”通信相比,WebSocket服务端可以“主动”向客户端推送消息。另外,WebSocket是实时通信的。【注意】WebSocket协议不适合那些不支持HTML5或对HTML5支持不够充分的浏览器。首先,安装支持websocket通信协议的模块ws。服务端代码如下/** * websocket服务端 *///加载ws模块const WebSocket = require("ws");con原创 2021-12-28 15:01:26 · 1324 阅读 · 0 评论 -
Node.js网络通信方式:Http协议
上篇介绍了UDP协议通信,本篇介绍Http协议:一种通用、无状态的应用层协议。原创 2021-12-23 20:35:44 · 844 阅读 · 0 评论 -
Node.js网络通信方式:UDP协议
上篇介绍了TCP通信,本篇将介绍UDP通信协议:原创 2021-12-21 19:41:39 · 1362 阅读 · 0 评论 -
Node.js网络通信方式:TCP协议
服务器与客户端之间的通信必不可少,接下来的文章陆续介绍TCP、UDP、Http以及Websocket等协议方式,会简单介绍它们的原理特点与不同。本篇介绍TCP传输协议:是一种可靠的长连接数据传送方式。应用层要发送的数据会被切割成“段”,然后进行发送。关于TCP连接的建立,一般会经历3次握手。先安装net模块服务端代码如下:客户端代码如下:...原创 2021-12-21 18:43:43 · 3903 阅读 · 0 评论 -
Node.js关于CSV文件的操作
本篇介绍关于表格CSV文件的操作:解析读取以及保存存储。原创 2021-12-21 14:52:25 · 3458 阅读 · 0 评论 -
Node.js操作Json格式文件
json格式文件也是很常用的数据存储传输格式。本篇将介绍Node.js如何添加、修改和解析Json格式数据。/** * Json文件操作:添加、修改、删除以及读取 */const fs = require("fs");const path = require("path");var jsonFilePath = path.join(__dirname,"Student.json");fs.open(jsonFilePath,"w+",(err,fd)=>{ //1.向S原创 2021-12-15 18:44:10 · 2899 阅读 · 0 评论 -
Node.js文件监视
监听文件发生的变化,如重命名、修改、删除之类。/** * 文件监视 */const fs = require("fs");const path = require("path");var filePath = path.join(__dirname,"HelloWorld.txt");//监视1:fs.watch()方法更高效,但其API在各个平台上并非完全一致,在某些情况下不可用。【推荐】fs.watch(filePath,(eventType,fileName)=>{原创 2021-12-15 17:26:00 · 542 阅读 · 0 评论 -
Node.js文件系统-文件流操作(四)
上篇介绍了关于文件的删除、复制、重命名等操作,本篇将介绍文件的流操作。流是对大型数据文件管理、传输高效地处理方式。/** * 文件流操作 */const fs = require("fs");const path = require("path");const zlib = require("zlib");var targetFilePath = path.join(__dirname,"HelloWorld.txt");var targetOutPath = path.join(_原创 2021-12-15 15:33:32 · 1398 阅读 · 0 评论 -
Node.js文件系统-文件操作(三)
上篇介绍了文件的读取与写入操作,本篇介绍文件的重命名、复制、删除以及访问星检查。/** * 文件操作:重命名、复制、删除以及访问性检查 */const { constants } = require("buffer");const fs = require("fs");const path = require("path");//目标输出路径var targetOldPath = path.join(__dirname,"input.txt");var targetNewPath =原创 2021-12-14 15:57:37 · 783 阅读 · 0 评论 -
Node.js文件系统-文件操作(二)
上篇介绍了关于文件的打开和信息获取方式,本篇介绍文件的读取和写入。1.读取:支持同步和异步,另外还有读取的方式不同,读取指定的部分数据,读取文件的全部内容。/** * 文件操作:打开、读取、写入以及文件信息的获取 */const fs = require("fs");const path = require("path");//目标文件var targetFilePath = path.join(__dirname,"HelloWorld.txt");//【同步】打开文件,以读写原创 2021-12-14 15:22:08 · 800 阅读 · 0 评论 -
Node.js文件系统-文件操作(一)
本篇介绍关于文件的操作:打开、读取、写入以及关于文件信息的获取。1.打开:文件打开有多种模式,也有同步和异步的区分。/** * 文件操作:打开、读取、写入以及文件信息的获取 */const fs = require("fs");const path = require("path");//目标文件var targetFilePath = path.join(__dirname,"HelloWorld.txt");//【同步】打开文件,以读写的模式打开文件if(fs.exis原创 2021-12-14 10:48:54 · 1289 阅读 · 0 评论 -
Node.js文件系统操作-目录
服务端进行文件操作是很经常的,Node.js提供了fs模块,封装了一系列关于文件系统的操作。这些操作一般都有同步和异步2种方式。1)同步:会阻塞整个进程,需要等所有任务完成,才能继续往下执行。2)异步:支持同时处理多个任务,阻塞少,性能高,速度快。从本篇开始,将陆续介绍关于文件系统操作API,该篇介绍关于目录的操作:创建、删除以及目录内容遍历。首先是创建目录/** * 文件目录操作:创建、删除以及目录内容遍历 *///载入fs模块const fs = require("fs"原创 2021-12-13 21:18:48 · 704 阅读 · 0 评论 -
Node.js抓取网页图片
本篇介绍利用第3方的request和cheerio模块实现抓取网页图片到本地的功能。首先,创建项目工程Crawling,并创建package.json文件来管理与安装该项目依赖的模块包。其次,安装第3方模块包request和cheerio包准备工作完成后,现在来编写代码:/** * 抓取网页图片 *///载入第3方request模块const request = require("request");//载入第3方cheerio模块const...原创 2021-12-13 16:32:21 · 2240 阅读 · 2 评论 -
Node.js包管理器npm
Node.js的包管理器npm【Node Package Manager】:用来安装、共享和发布代码以及管理项目中的依赖。它包含一份package.json文件,这份文件用来管理项目依赖的第3方模块的,跟Android项目的AndroidManifest.xml文件作用类似。Node.js本身集成了npm工具,可以通过命令npm install npm -g实行安装或升级。首选介绍如何查找自己需要安装的第3方包的方式如下:1)通过浏览器查询,链接:npmhttps://www.npmjs.com/原创 2021-12-13 10:34:21 · 640 阅读 · 0 评论 -
Node.js-url模块
本篇介绍关于url地址解析处理的模块使用。/** * url解析处理 *///1.传统解析urlconst url = require("url");var urlObj = url.parse("https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash");console.log("传统API解析url:",urlObj);console.log("传统API解析url的端口:",urlObj.port);//2.原创 2021-12-11 16:31:58 · 358 阅读 · 0 评论 -
Node.js-path模块
本篇介绍关于路径解析处理的内置模块的使用。/** * 路径解析Path模块的使用 */const path = require("path");console.log("路径格式化:",path.normalize("/test//model///song.txt"));console.log("路径连接:",path.join("\test","model","\\song2",".txt"));console.log("文件的绝对路径:",path.resolve("song.txt"原创 2021-12-11 16:08:56 · 129 阅读 · 0 评论 -
Node.js-util模块
本篇介绍实用工具内置模块util的使用。/** * 实用工具util模块使用 */const util = require("util");console.log("util对象字符串化:");console.log(util.inspect(util,{showHidden:true,depth:null}));console.log("字符串格式化:");console.log(util.format("%s:%d","计算的总和",5));console.log("是否是原创 2021-12-11 15:16:22 · 487 阅读 · 0 评论 -
Node.js-内置os模块
本篇介绍关于操作系统操作的内置模块os的使用。/** * 内置操作系统模块的使用 */const os = require("os");console.log("操作系统类型:",os.type());console.log("操作系统平台:",os.platform());console.log("系统内存总量:",os.totalmem(),"字节");console.log("系统空闲内存:",os.freemem(),"字节");console.log("系统CPU信息如下:"原创 2021-12-11 14:59:33 · 667 阅读 · 0 评论 -
Node.js模块
模块功能类似于dll文件,载入该模块,就可以调用该模块的函数和变量。将可重用的代码封装在一模块中,这样可以达到可重复利用、减少代码量,提高开发效率的目的。本篇文章介绍Node.js模块的自定义和使用。模块定义编写有2种方式:将需要“暴露”的变量和函数,赋值给exports和module.exports对象属性。exports和moudle.exports的区别与联系如下:1)exports对象实际是moudle.exports对象的“引用”,require载入使用exports对象实现的模块时,本质原创 2021-12-11 14:34:58 · 573 阅读 · 2 评论 -
Node.js图片文件请求浏览
本篇文章介绍如何搭建图片文件服务器,用户可以在浏览器请求访问浏览该图片。/** * 图片服务器搭建 *///载入http模块const http = require("http");//载入fs模块const fs = require("fs");//载入path模块const path = require("path");//载入url模块const url = require("url");//载入zlib模块const zlib = require("zlib");原创 2021-12-10 11:42:14 · 1792 阅读 · 0 评论 -
Node.js流stream
流是一种等对文件读写、网络通信等过程中有大量数据处理和管理的高效处理方式。与其他数据处理方式相比,有2大优势:1)内存消耗低,无需全部加载进内存,才可以处理;2)时间快,获得部分数据就开始处理;流的类型有4种:1)可写流(writable):只能读取数据2)可读流(readable):只可写入数据3)双工流(duplex):既能读也可以写4)转换流(transform):既能读也可以写。类似于双工流、但其输出是其输入的转换。Node.js内置了stream模块,专门负责处理所原创 2021-12-09 20:34:41 · 270 阅读 · 0 评论 -
Node.js的Buffer
Buffer又名缓冲器,是一块分配的一块内存区域,可以把它看做是一个整数数组,每个整数代表一个数据字节。Buffer数据类型引入的目的帮助开发者处理二进制数据。它与下篇将要介绍的流紧密相关。当流接收的速度比其消化的速度快时,数据会放入Buffer中。本篇主要介绍关于Buffer的操作的API。/** * Buffer *///创建Buffervar buffer1 = Buffer.from("Tonny");//打印buffer1console.log("buffer1的值为:",bu原创 2021-12-09 17:56:29 · 569 阅读 · 0 评论 -
Node.js定时器
Node.js有内置的定时API,本篇做相关介绍。/** 时间定时器*///一次性定时器var timer1 = setTimeout(function(){ console.log("setTimeOut:2秒后触发");},2000);//清除定时器//clearTimeout(timer1);//周期性定时器var timer2 = setInterval(() => { console.log("setInterval:每隔5秒触发一次"); }原创 2021-12-09 16:17:03 · 855 阅读 · 0 评论