Node.js 后端开发
文章平均质量分 60
Node.js 后端开发
秀秀_heo
一个学习前端开发的大学生,博客为自己的学习笔记,仅供个人学习使用。
展开
-
【Nest】Module 模块
创建动态模块时,通常会使用forRoot或静态方法。这些方法允许在模块初始化时传入自定义配置,并根据配置生成 Providers。原创 2024-11-13 14:44:31 · 708 阅读 · 0 评论 -
【Nest】Providers 提供者
定义一个服务类。在模块中将该服务注册为 Provider。在其他类中注入该服务类,以使用其提供的功能。在 NestJS 中,Providers 是创建、管理和注入服务、库的核心。通过使用装饰器、模块化管理和依赖注入,我们可以轻松创建可复用、易测试的服务层逻辑。同时,通过作用域和工厂模式,我们可以根据不同的场景和需求,灵活定义和配置 Providers,从而使应用更加灵活和模块化。原创 2024-11-13 14:20:04 · 706 阅读 · 0 评论 -
【Nest】常用装饰器
【代码】【Nest】常用装饰器。原创 2024-11-13 11:53:31 · 540 阅读 · 0 评论 -
【Nest】初识 Nest
【代码】【Nest】初识 Nest。原创 2024-11-13 11:38:25 · 147 阅读 · 0 评论 -
【Express】会话控制
HTTP 是一种无状态的协议,它没有办法区分多次的请求是否来自于同一个客户端,无法区分用户。原创 2023-11-08 09:26:28 · 116 阅读 · 0 评论 -
【Express】响应头
【代码】【Express】请求头和响应头。原创 2024-03-12 14:51:38 · 638 阅读 · 0 评论 -
【Express】创建防盗链中间件(HotLinking)
比如我们可以在 http://localhost:3000/assets/index.html 网站中获取某个图片,但是在 http://127.0.0.1:3000/assets/index.html 不可以获取,就是因为该网站设置了防盗链,而localhost 在白名单内。原创 2024-03-12 14:16:30 · 204 阅读 · 0 评论 -
【Express】express-jwt
通常可以使用 jwt 进行 token 的生成,使用 express-jwt 进行 token 的验证。express-jwt是对jsonwebtoken进行了封装,在验证策略方面做了很多扩展。原创 2024-03-24 14:50:52 · 348 阅读 · 1 评论 -
【Express】创建输出日志中间件(log4js)
【代码】【Express】创建输出日志中间件(log4js)原创 2024-03-12 13:32:43 · 601 阅读 · 0 评论 -
【Express】自定义错误码和通用返回对象
【代码】【Express】自定义错误码和通用返回对象。原创 2024-07-06 11:40:24 · 337 阅读 · 0 评论 -
【Node.js】worker_threads 多线程
尽管 JavaScript 是单线程的,但有时候在处理计算密集型任务或长时间运行的操作时,单线程的运行会导致主线程被阻塞,影响服务器性能。允许我们创建多个 Worker,但直接为每个任务创建一个新的 Worker 可能效率较低。模块允许我们在同一个进程内创建并运行多个线程,每个线程有自己的事件循环,但共享进程的内存空间。如果工作线程的事件循环为空(没有待处理的事件),Worker 会自动退出。在这个简单的示例中,我们创建了一个大小为 4 的线程池,任务可以通过。线程池会依次执行任务,并复用空闲的线程。原创 2024-10-04 18:07:19 · 1537 阅读 · 0 评论 -
【JavaScript】 线程和进程
当操作系统命令 CPU 去执行一个进程时,实际上是该进程的多个线程之间切换执行,主要是为了充分利用多核 CPU(比如线程数 === CPU 数,线程永不阻塞,没有 io,只存在大量运算)。此外,JS 最初是为了解决⽹⻚交互的问题⽽诞⽣的,⽽⽹⻚交互的需求⼤部分是基于⽤户事件的,⽐如点击按钮、输⼊⽂本等。比如在大文件上传过程中的 hash 计算部分,由于需要读取所有文件,依次将每一个分片计算 hash ,是 CPU 密集型应用,直接在主线程操作会造成页面卡顿,所以需要开启额外的 线程来计算 hash。原创 2024-07-23 21:45:01 · 500 阅读 · 0 评论 -
【Node.js】图片水印
根据业务需求自行更改操作,下面只讲最简单的给图片加水印。比如不再支持默认导入。原创 2024-10-04 17:29:07 · 807 阅读 · 0 评论 -
【Node.js】文件下载
用户可能安装了某些下载工具,这些下载工具在安装时,都会自动安装相应的浏览器插件,只要对下载地址稍作修改,就会触发浏览器使用插件进行下载,当然,不同插件的地址规则不同。这部分操作是由服务器完成的,和前端开发无关。此外,还有一些响应头。服务端在响应头中加入。原创 2024-05-25 10:30:46 · 575 阅读 · 0 评论 -
fs-extra - 更优雅的处理文件
fs-extra的作用在于为 Node.js 提供更加丰富、方便的文件操作功能,减少开发者对文件系统操作的复杂性。它集成了许多实用功能,使得代码更加简洁、优雅,适合处理各种文件操作需求。原创 2024-10-02 18:36:04 · 572 阅读 · 0 评论 -
multer 和 multiparty 的区别
如果你只是需要简单的文件上传功能,推荐使用 multer,它更简单、性能更好,且直接与 Express 配合使用。如果你需要更灵活、更细粒度的控制,并且有复杂的表单解析需求,可以选择 multiparty,但相对使用起来更复杂。原创 2024-10-02 18:07:32 · 923 阅读 · 0 评论 -
Webstorm 中对 Node.js 后端项目进行断点调试
首先,肯定需要有一个启动服务器的命令脚本。原创 2024-10-01 21:51:37 · 1063 阅读 · 0 评论 -
【Koa】文件上传
主要使用两个 koa 插件,koa-body 里面自带文件上传功能,还有一个 koa-staitc 用于配置静态资源目录(可以通过路径直接访问图片)。原创 2024-10-01 14:39:47 · 322 阅读 · 0 评论 -
使用 npkill 快速清理本地 node_modules 文件
npkill 可以直接在终端可视化的清除 本地 node_modules 文件夹,方便我们即使清除不常用的依赖。然后,我们选择不需要的 node_modules 按下空格即可删除。原创 2024-09-30 16:11:21 · 509 阅读 · 0 评论 -
【已解决】Koa 异步问题导致响应信息不能正确输出,始终为 Not Found
之前一直用的 express,习惯了回调的写法,最近开始写 koa,由于 koa 是基于 Promise ,所以整个过程都需要使用异步获取数据。比如查询数据库时,每一个中间件处等等,都需要使用 async / await。一旦,某个地方没有使用异步, koa 都会毫不讲理的返回 Not Found,不论在控制台调试的时候各个异步操作有没有正确输出数据。所以信息都正常打印。按道理来说可以响应体可以正常获取响应数据。但是,响应信息不能正确输出,始终为 Not Found。原创 2024-09-30 15:06:03 · 541 阅读 · 0 评论 -
【已解决】Argument `where` of type UserWhereUniqueInput needs at least one of `id` arguments Available op
这个问题是因为在Prisma中,findUnique方法要求在where对象中提供一个唯一标识符来定位特定的记录,这里我并没有再创建 model User 的时候提供这个唯一标识,所以不可以使用该方法查询。如果想通过username来查找用户,那么你需要在Prisma的数据模型中定义username为一个唯一的字段,并且确保没有两个用户有相同的用户名。还有一个问题,创建模型的时候可以使用大写,但是在之后的 prisma 操作模型时候,一律适用小驼峰,比如 VipUser -> vipUser。原创 2024-09-29 22:03:26 · 405 阅读 · 0 评论 -
Prisma 基本使用
然后会根目录下多一个名为 prisma 的新目录,其中包含一个名为 schema.prisma 的文件,该文件包含带有数据库连接变量和架构模型的 Prisma 架构。一般来说,还需要在项目的根目录中创建 .env 文件,用于定义环境变量(例如您的数据库连接)。这里 webstorm 可以安装一个插件 prisma orm 配合使用,提供代码高亮等。中间需要的 migrate name 随便起,不重要。“mysql://账号:密码:@主机:端口/库名”以下内容官方文档都有,特此记录便于快速查阅文档。原创 2024-09-29 21:09:26 · 424 阅读 · 0 评论 -
Vue 和 Express 中配置环境变量
于是环境变量配置的需求就应运而生,我们只需做简单的配置,把环境状态切换的工作交给代码。如果想要在 viteconfig 里面使用环境变量(也就是在 nodejs 环境中使用环境变量),和在项目中有些不同。import.meta.env.BASE_URL 指的就是 vite.config.js 中的 base 配置。顾名思义,开发使用的环境,每位开发人员在自己的dev分支上干活,开发到一定程度,同事会合并代码,进行联调。项目开发过程中,至少会经历开发环境、测试环境和生产环境(即正式环境)三个阶段。原创 2024-01-27 18:33:23 · 564 阅读 · 0 评论 -
【Koa】初识 Koa
有时,某些中间件希望添加一些额外的信息,以方便后续中间件处理,比如当前登录的用户信息。Koa建议把这些信息添加到ctx.state中该属性默认是一个空对象,专门提供给中间件开发者添加额外信息的。原创 2024-09-29 16:09:42 · 1063 阅读 · 0 评论 -
用户头像(图片文件)上传(Vue + nodejs 前后端)
先计算原本有没有图片,有则展示原图片的 url,没有则展示 icon点击上传组件从本地选取图片,单个图片上传可以控制选取后自动上传和之后手动上传当统一手动上传时,选择完图片之后将选择的图片file文件转换为URL地址进行前端页面的回显,并将其原本file格式的文件赋值给form表单内容对象,不修改头像默认使用原图片的 url将form表单内容对象转化为 FormData 的格式,并设置 FormData 请求头,作为参数传递给后端。原创 2024-02-19 17:43:37 · 1752 阅读 · 1 评论 -
【Node.js】semver 语义化版本控制
允许变动 MINOR 和 PATCH,但不允许变动 MAJOR。例如,^1.2.3 允许升级到 1.3.0、1.4.0 甚至 1.9.9,但不允许升级到 2.0.0。允许变动 PATCH,但不允许变动 MINOR。例如,~1.2.3 意味着你可以接受 1.2.4、1.2.5,但是不接受 1.3.0。semver(语义化版本控制)是一种约定式的版本命名规范,它将版本号分为主版本号、次版本号和修订号,并按照。举例:~1.2.3 包含 1.2.3 到 1.2.x,不包含 1.3.0。原创 2024-09-20 10:21:40 · 339 阅读 · 0 评论 -
【Node.js】multer 文件上传
处理文件上传的相关逻辑,如接收和保存上传的文件、限制文件大小、设置文件类型限制等。导入multer模块和创建multer实例(上传文件相关配置)Multer是Node.js中用于处理文件上传的中间件。使用 req.file 可以获取上传的文件信息。类型的表单数据,它主要用于上传文件。安装multer:在命令行中运行。来安装multer模块。原创 2023-10-16 16:49:47 · 837 阅读 · 0 评论 -
【Express】登录鉴权
【代码】【Express】登录鉴权。原创 2023-10-15 20:42:41 · 98 阅读 · 0 评论 -
【Express】应用生成器
【代码】【Express】应用生成器。原创 2023-10-14 10:57:03 · 104 阅读 · 0 评论 -
【Express】静态资源
通过 Express 内置的 express.static 可以方便地托管静态文件,例如图片、CSS、JavaScript 文件等。将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问了。然后,就可以通过带有。原创 2023-10-13 20:39:51 · 561 阅读 · 0 评论 -
【Express】获取请求参数和响应参数
【代码】【Express】获取请求参数和响应参数。原创 2023-10-13 20:10:13 · 480 阅读 · 0 评论 -
【Express】中间件
在Express中,中间件是。它可以访问请求对象(req)、响应对象(res)和应用程序的请求-响应周期。在Express中,中间件可以通过以下方式定义和使用:使用app.use()app.use()方法用于将中间件函数绑定到应用程序的每个请求。它可以在任何路由之前执行,并且对所有请求都生效。使用路由特定的中间件:可以将中间件函数作为参数传递给特定的路由方法,如app.get()app.post()等。这些中间件函数只对该路由起作用。原创 2023-10-13 19:16:11 · 592 阅读 · 0 评论 -
【Express】初识 Express 和路由
这些方法的第一个参数是要匹配的URL路径,第二个参数是处理请求的回调函数(可以有多个回调函数)。回调函数接收请求对象(req)和响应对象(res)作为参数,可以根据需要对请求进行处理,并生成相应的响应。在Express中,路由用于确定应用程序如何响应客户端对特定端点(URL)的请求。简单来说,路由就是根据请求的URL和HTTP请求方法,执行相应的处理函数来处理请求和生成响应,默认是 GET 请求。路由路径和请求方法一起定义了请求的端点,它可以是字符串、字符串模式或者正则表达式。安装express 模块。原创 2023-10-13 17:00:19 · 230 阅读 · 0 评论 -
【Node.js】RabbitMQ 延时消息
在 RabbitMQ 中实现延迟消息通常需要借助插件(如 RabbitMQ 延迟队列插件),因为 RabbitMQ 本身不原生支持延迟消息。延迟消息的一个典型场景是,当消息发布到队列后,等待一段时间再由消费者消费。这可以通过配置 TTL(Time-To-Live)和死信队列(DLX, Dead Letter Exchange)实现,或者通过 RabbitMQ 的延迟插件实现。使用延迟插件可以简化 RabbitMQ 中延迟消息的实现。通过交换机和x-delay属性,开发者可以灵活地控制消息的延迟发送时间。原创 2024-09-15 19:28:02 · 957 阅读 · 0 评论 -
【Node.js】RabbitMQ 不同交换器类型的使用
RabbitMQ 使用交换器(Exchange)来接收生产者发送的消息,并根据交换器类型和绑定规则将消息路由到一个或多个队列(Queue)。:基于完全匹配的路由键进行消息路由。:基于模式匹配的路由键进行消息路由,支持通配符等(使用"*“匹配一个单词或使用”#"匹配多个单词)。:基于消息头属性进行消息路由。:将消息广播到所有绑定的队列,无视路由键。使用 MQ 的时候,记得先启动 MQ 服务。Direct Exchange 适用于需要基于精确匹配路由键来路由消息的场景。原创 2024-09-15 19:11:29 · 1238 阅读 · 0 评论 -
【Node.js】初识 RabbitMQ
MQ 顾名思义,是消息队列。RabbitMQ 是一个消息队列系统,用于实现异步通信。基于 AMQP。AMQP(高级消息队列协议) 实现了对于消息的排序,点对点通讯,和发布订阅,保持可靠性、保证安全性。在 Node.js 的微服务架构中,RabbitMQ 可以作为服务之间的消息传递中介,帮助解耦系统组件并提升系统的扩展性和可靠性。支持主流操作系统和多种语言。通过 RabbitMQ,你可以让一个服务发送消息到队列,另一个服务从队列中消费消息。原创 2024-09-15 14:31:48 · 1508 阅读 · 0 评论 -
【Node.js】初识微服务
Node.js 的微服务架构是一种通过将应用程序分解为独立的、松耦合的小服务的方式进行系统设计。每个微服务负责处理一个特定的业务功能,并且这些服务可以独立开发、部署、扩展和管理,并且可以通讯。它的核心思想就是解耦。微服务和微前端是类似的,微前端就是借鉴了微服务的理念去设计的。原创 2024-09-15 11:19:52 · 860 阅读 · 0 评论 -
【Node.js】日志记录
【代码】【Node.js】日志记录。原创 2024-07-29 11:43:23 · 365 阅读 · 0 评论 -
【Node.js】数据校验 validate.js
将日期格式转换文件放入全局初始化的文件,全局使用。原创 2024-07-29 11:41:54 · 434 阅读 · 0 评论 -
【Node.js】时间处理
服务器(数据库)应该统一使用时间戳用来记录时间。客户端再将时间戳转为本地时间显示。原创 2024-07-29 11:41:24 · 579 阅读 · 0 评论
分享