关于 Next 中间件Nest 中间件中间件是处于请求和响应周期中间的函数,类似 express 中间件,可以访问请求对象(req)、响应对象(res)、和应用程序的下一个中间件函数。中间件的主要任务是可以执行以下操作:
执行任何代码。
修改请求和响应对象。
结束请求-响应周期。
调用堆栈中的下一个中间件函数。
如果当前中间件没有结束请求-响应周期,它必须调用 next() 方法将控制权传递给下一个中间件,否则请求将被挂起。
Nest 中间件应用场景:
请求日志记录:记录每个进入应用的请求的详细信息,如请求路径、方法、来源IP等,便于调试和监控。
身份验证和授权:在请求继续处理之前验证用户的身份,检查用户是否有权限访问特定的路由或资源。
请求数据处理:对请求中的数据进行预处理,如解析、格式化、校验等。
设置响应头:为即将发送的响应设置一些通用的HTTP头,如跨域资源共享(CORS)头、安全相关的头等。
性能监控:监控请求处理的时间,以便分析和优化性能。
缓存:实现缓存逻辑,减少对后端服务或数据库的请求,提高应用性能。
限流:控制请求的频率,防止服务被过度使用或遭受拒绝服务攻击(D ...
ProvidersProviders 是 Nest 的一个基本概念。许多基本的 Nest 类可能被视为 provider - service, repository, factory, helper 等等。 他们都可以通过 constructor 注入依赖关系。 这意味着对象可以彼此创建各种关系,并且“连接”对象实例的功能在很大程度上可以委托给 Nest运行时系统。 Provider 只是一个用 @Injectable() 装饰器注释的类。
1.基本用法module 引入 service 在 providers 注入
![[83a5e31c147e948fb66375779a62a2d2_MD5.png]]
在Controller 就可以使用注入好的service 了
![[e52244a25ef5b4ce4bbc5a139984879b_MD5.png]]
2.service 第二种用法(自定义名称)第一种用法就是一个语法糖
其实他的全称是这样的
123456789101112import { Module } from '@nestjs/com ...
什么是NestNest (NestJS) 是一个用于构建高效、可扩展 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,使用 TypeScript 构建并完全支持(但仍允许开发人员使用纯 JavaScript 进行编码),并结合了 OOP(面向对象编程)、FP(函数式编程)和 FRP(函数式响应式编程)的元素。
Nestjs框架基于Express和Fastify(速度最快的web框架之一)
开始启动
1pnpm start
开发的时候需要监视文件的变化,自动重新编译和重新加载服务器
1pnpm start:dev
文件介绍12345678910- node_modules — 放置项目的依赖文件- src — 放置开发的代码文件 - app.controller.spec.ts — 测试 app.controller.ts 文件的单元测试文件 - app.controller.ts — 根控制器文件,处理路由的请求和定义路由处理器 - app.module.ts — 根模块文件,Nest 应用的主要入口 - app.service.t ...
IOC(控制反转)和DI(依赖注入)是spring中的重要组成部分,下面是个人的一些理解,不代表官方。
1、IOC是什么?
IOC:全名是Inversion of Controller 中文解释是控制反转,不是什么技术,是一种设计思想。在java开发中IOC意味着你设计好的对象交给容器控制,而不是传统的在你对象内部直接控制。如何理解好IOC那?理解IOC的关键是要明确:“谁控制谁”、“控制什么”、为何是反转(有反转就应该有正转)哪些方面反转了,我们来分析一下:
1)谁控制谁,控制什么:传统的java SE程序设计,我们直接在对象内部new进行创建对象,是程序主动去创建对象,而IOC有专门的容器来创建这些对象,即由IOC容器来控制对象的创建;谁控制谁?当然是IOC容器控制对象,控制什么?主要是控制外部资源的获取(不只是对象包括比如文件等)。
2)为何是反转,那方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中直接获取依赖对象,也就是正转;而反转是由容器来帮忙创建和注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了 ...
学 vue 前搭建小兔鲜项目时发现什么都不懂, 个人推荐可以只跟着打完前三天的, 了解项目的基本构造, 之后就可以开始vue的学习啦!![[前端了解/小兔鲜/vue项目结构.canvas]]
学 vue学习vue前可以先找一个速通typescript (一二十分钟)来看一看, 后面学vue的时候遇到不会的语法了再去网上找
我当时是看的这个视频【尚硅谷Vue3入门到实战,最新版vue3+TypeScript前端开发教程】https://www.bilibili.com/video/BV1Za4y1r7KE?p=67&vd_source=26eb5025743189cb77f15d6e356b6da3暑假的时候学的, 学了十天(内容不多, 但是自己玩玩耍耍, 白天的时候打游戏去了, 只有晚上的时候学了点)
不知道大家学这个的手是什么时候, 按照正常上学时候的速度, 应该能在5-10天学完, 拖太长了也不好
练习vue不知道这个时候你们有自己的博客没有
看着学长学姐们自己写的博客, 我是真心动啊, 于是马上安排
在网上找的教程, 用 hexo 框架搭了一 ...
前提:因交叉学科老师要求交一个v-log, 但拍摄小白根本不会拍摄. 只能靠网上的资源现拼接啦.但是B站居然没有下载视频这一功能, 所以有了这篇帖子
安装首先! 你必须要有一个 python 环境
然后进入点击这个仓库链接 yutto
克隆该仓库
打开控制台, 或者git, 进入克隆该仓库的文件夹
运行 pip install yutto-2.0.3-py3-none-any.whl
等待安装依赖, 接着运行 pip install yutto
恭喜你! 现在你可以下载各种各样的B站2视频啦
下载操作复制视频链接
运行 yutto + 视频链接
欧克, 视频已经安装到你的电脑文件夹上面啦! (默认安装在你克隆的仓库的文件夹里面哦)
两个流程参考图
一个是我写的 【Xmind思维导图】axios源码
一个是.学长写的 【Xmind思维导图】Axios https://app.xmind.cn/share/oWnkR6z1?xid=4ubuXhXS
官方文档
lec飞书资源
来自 .学长
数据流axios 作为方法导出,接收 defaults 默认配置
axios 自带 .create 方法,用户在二次封装时用到,传入一个 config 配置对象
两个方法通过 createInstance 被创造,不过 .create 方法传入的是 (mergeConfig(defaults, config)) 深合并后的默认配置
createInstance 方法中,首先创建一个 Axios 实例(即 context),然后定义一个 instance 函数,将 instance 内部的 request 方法的 this 指向 context(Axios) 实例,所以 instance(config) 等价于 Axios.request(config);
并使用 extend 浅拷贝将 context(Axios) 将实例上的所有属 ...

框架Vue 3 的框架结构相比 Vue 2 进行了彻底的重构,使其更加模块化、高性能和 Tree-shaking 友好。
Vue 3 的核心不再是一个庞大的单体结构,而是由一系列职责清晰的模块组成的,这种设计被称为 “Monorepo” 架构。
Vue 3 的模块化框架结构Vue 3 的框架主要由以下几个核心包组成,它们协同工作,构成了 Vue 的运行时环境:
1. 响应式系统 (@vue/reactivity)
核心作用: 这是 Vue 3 最底层也是最核心的机制。它负责跟踪状态的变化并触发视图更新。
技术基础: 使用 JavaScript Proxy 实现。
主要 API: 提供了 reactive、ref、readonly、computed、watch 等函数,用于创建和管理响应式状态。
优势: 它是完全独立的,可以被用于任何 JavaScript 环境中,与 DOM 解耦。
2. 运行时核心 (@vue/runtime ...
功能介绍将帖子内部的标题提取出来, 按照层级顺序将他们呈现在目录上, 方便用户浏览大致内容
随着用户滑动界面, 目录会显示用户浏览的位置(具体表现为对应的标题演示变化, 加上active)
当用户直接点击目录上的某一个标题时, 界面也会跳转到相应的位置
学习: 对于任何浏览器, 怎么在不影响滚动功能的情况下, 隐藏滚动条
详解样式12345678910111213141516171819202122 <div class="toc-panel"> <div class="toc-container"> <div class="toc-title">目录</div> <div class="hiddenMouse"> <div class="toc-list"> <template v-if="tocArray.length === 0"> <div clas ...
上传文件123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687<script setup>import { ref, getCurrentInstance } from 'vue';const {proxy} = getCurrentInstance()const props = defineProps({ modelValue: { type: Object, default: null }, imageUrlPrefix: { type: String, }})//如果父组件传来一个图片地址, 就用父组件的, 否则展示用户上传的图片const localP ...






