- 博客(46)
- 收藏
- 关注
原创 TypeError: dayjs_1.default is not a function解决办法
是指在 TypeScript 中启用 ES 模块导入语法的自动转换,使得默认导出的模块可以被正确引入。如果设置为true,TypeScript允许使用import module from 'module'的语法导入一个默认导出模块,而不需要module.default。在nestjs中使用dayjs出现问题。
2023-12-17 22:25:41
1615
原创 [Nestjs] 限制请求次数
在该中间件中,你可以使用使用第三方库(如 express-rate-limit、fastify-rate-limit)来实现请求限制逻辑,这些库提供了方便的方式来设置每个IP地址或其他标识符的请求次数限制。这样,请求次数将被限制为每个 IP 地址或其他标识符在指定时间窗口内的最大请求次数。如果你使用的是 Fastify 或其他 HTTP 框架,可以选择相应的库来实现相似的功能。在NestJS中限制请求次数,可以使用中间件来实现。此外,你也可以根据业务需求自定义中间件来实现请求次数的限制逻辑。
2023-08-24 13:37:45
555
原创 [Nestjs] 解决跨域问题
来定义跨域请求的来源、允许的 HTTP 方法和请求头,通过以上步骤,你可以在 NestJS 应用程序中实现解决跨域问题的功能。确保在生产环境中正确配置 CORS,以确保安全性和数据保护。在前后端开发中,经常遇到需要解决跨域问题。接下来简单介绍在Nestjs中解决跨域问题的方法。中间件,并将其应用于所有的路由。你也可以通过指定特定的路由来限制跨域请求。在上述代码中,你可以设置。
2023-08-24 13:33:49
664
原创 使用docker来部署Nestjs的简单配置
Docker容器提供了一种轻量级、可移植的部署方式。使用Docker部署NestJS应用程序可以确保在不同的环境中运行一致,并且避免了由于依赖关系或配置问题导致的部署错误。:Docker容器为每个应用程序提供了一个隔离的运行环境。这意味着你的NestJS应用程序在容器中运行时,与主机系统和其他容器相互隔离。这样可以避免由于系统环境差异而引起的问题,并增加应用程序的安全性。:使用Docker进行部署可以简化部署过程。
2023-08-24 13:26:07
1418
1
原创 Nestjs如何使用Jest测试代码
测试是保证代码质量和可靠性的重要手段,使用Jest进行测试可以帮助你更好地开发和维护NestJS应用程序。自动化和集成:Jest能够自动运行你的测试用例,并提供了丰富的报告和统计信息。这些功能使得编写全面的测试套件更加便捷,并且可以帮助你更好地理解和维护你的代码。此外,Jest还具有智能的文件监视功能,只运行受影响的测试用例,从而提高了开发效率。你可以在社区中获取到丰富的资源、学习资料和问题解答,使得你能够更好地使用Jest进行测试开发。它的断言语法清晰明了,减少了编写测试用例的工作量。
2023-08-24 13:19:53
215
原创 Docker compose v1 与 v2版本区别
请注意,这些只是Docker Compose版本1和版本2之间一些常见的区别,建议使用最新版本的Docker Compose来获得更好的功能和性能。你可以查阅Docker Compose官方文档,以获取更详细的信息和参考。Docker Compose是用于定义和管理多容器Docker应用程序的工具。
2023-08-24 13:11:23
576
原创 如何快速的学习认识Flutter
持续学习和更新:Flutter是一个不断发展和更新的框架,持续学习新的特性和最佳实践是保持竞争力的关键。学习Flutter框架:通过阅读官方文档、教程、书籍或参加在线课程来学习Flutter的核心概念、组件和布局。参与社区和资源:加入Flutter社区,在Flutter开发者论坛、社交媒体、GitHub上关注Flutter项目和相关库。记住,实践和项目经验是提升你的技能和熟练程度的关键。创建Flutter项目:使用Flutter命令行工具(flutter CLI)创建一个新的Flutter项目。
2023-08-24 13:06:01
48
原创 Vite 如何兼容老版本浏览器,解决浏览器无报错但打开空白
最近一个医院的项目,遇到有些电脑能访问web页面,有些电脑无法访问。最后发现是浏览器版本不一样,老的浏览器版本不能正常访问,而新的浏览器可以访问。因为医院是内网环境,电脑数量又比较多,所以没办法一一去升级浏览器版本。来兼容老版本的浏览器。该插件可以为你的Vite项目生成适用于老版本浏览器的传统的基于ES5的构建包。npm iterser -D ,如果不安装的话可能打包时会出错。找了一些资料后得知可以使用。
2023-08-24 12:51:18
1432
原创 如何在VUE使用PDF,使用VUE-PDF就够了。
在vue中实现在线预览PDF文件我们可以使用vue-pdf来实现。编译并运行Vue应用程序,您将能够在浏览器中在线预览PDF文件。替换为您要预览的PDF文件的路径。是PDF文件的URL或相对路径。
2023-08-24 11:26:11
1111
原创 如何在vue3中使用pinia
这样,你就可以在 Vue 3 中使用 Pinia 来管理应用程序的状态了。你可以创建多个 Pinia 模块来管理不同的状态,并在组件中使用这些模块。Pinia 是 Vue 的存储库,它允许您跨组件/页面共享状态。函数来获取一个 CounterStore 的实例。钩子函数中使用该实例的属性和方法。在上述示例中,我们首先导入。
2023-08-24 11:01:08
273
原创 TypeScript中字符串枚举和联合类型的区别
如果需要一个固定的集合并希望进行严格的类型检查,字符串枚举是一个好的选择。如果需要表示多种可能的值,并且希望更灵活地操作和推断类型,联合类型则更适合。联合类型的优点是更加灵活,可以将多个不同的类型组合在一起,并且可以使用 TypeScript 的类型推断来推断变量的具体类型。字符串枚举的优点是可以明确指定每个枚举成员的值,并且在编译后的 JavaScript 代码中使用这些值。它们对于需要一个固定集合的字符串值并且希望在编码过程中进行类型检查的场景很有用。
2023-08-23 12:09:37
158
原创 CSS嵌套与Sass嵌套的区别
其中之一是 Sass 嵌套,它提供了更强大和灵活的嵌套功能。总的来说,Sass 嵌套相对于普通 CSS 嵌套提供了更多的功能和灵活性,通过父选择器引用和其他 Sass 特性,使样式规则更具语义性和可读性。其他 Sass 功能:Sass 还提供了许多其他功能,例如变量、混合(Mixins)、继承(Inheritance)等,这些功能可以与嵌套一起使用,使样式表更加模块化和易于维护。嵌套深度限制:Sass 中的嵌套可以无限层级,但是过度嵌套可能导致生成的 CSS 选择器过于复杂和冗长,影响性能和可读性。
2023-08-23 11:59:55
74
原创 Typescript vs Javascript 这两种流行编程语言之间的主要区别
这个编译过程可以通过使用 TypeScript 编译器(tsc)来完成,将 TypeScript 文件 (.ts) 转换为 JavaScript 文件 (.js)。总的来说,TypeScript 是建立在 JavaScript 基础上的一种扩展语言,提供了更多的功能和类型安全性。对于大型项目或需要强类型约束的项目来说,TypeScript 是一个更好的选择。TypeScript 可以直接使用 JavaScript 的库,并且还有一些专门为 TypeScript 设计的库,提供了更好的类型定义和代码提示。
2023-08-23 11:06:58
60
原创 [JavaScript] 回调、匿名和递归函数的简单介绍
递归函数需要注意设置基准条件(停止递归)以避免无限循环,并确保每次递归调用都朝着基准条件靠近。
2023-08-23 10:25:31
46
原创 CSS 单位详解以及怎样使用它们
rem(root em):rem 单位与 em 单位类似,但是相对于根元素(即 元素)的字体尺寸进行计算。其他单位:除了上述常见单位外,还有一些其他单位可用于特定的 CSS 属性,如秒(s)用于动画持续时间、毫秒(ms)用于动画延迟、角度单位如度(deg)、弧度(rad)、梯度单位如变化率(grad)等。vh 和 vw:vh(视窗高度,Viewport Height)和 vw(视窗宽度,Viewport Width)是相对于视口(浏览器窗口)的高度和宽度的单位。
2023-08-23 10:19:37
91
原创 [CSS技巧] 使用黑白效果来改变网站外观
请注意,灰度滤镜只是一种视觉效果,它不会真正改变网站内容的颜色或样式。因此,当你需要将网站转为黑白时,确保你的设计元素和图像在黑白模式下仍然具有良好的可读性和可识别性。要使用 CSS 中的黑白效果来改变网站的外观,你可以使用灰度滤镜(grayscale filter)来实现。如果你只想对某个特定区域或元素应用黑白效果,你可以通过选择器来指定相应的元素,并应用灰度滤镜样式。元素上,这将使整个网站的内容都转为黑白显示。你也可以将上述样式应用于其他特定的元素或类,以局部地应用黑白效果。在上述示例中,使用了。
2023-08-23 10:13:14
172
原创 [CSS技巧]使用灰度和模糊来保护敏感内容
注意:模糊和灰度效果是应用于元素及其内容的,因此它们并不能提供真正的保护措施,只是一种视觉上的模糊和灰化处理。对于真正的敏感内容保护,建议在后端服务器处理,并采用适当的安全措施。类应用于包含敏感内容的元素上,这将使元素及其内容完全转为灰度显示。类应用于包含敏感内容的元素上,这将使元素及其内容模糊显示。根据需要,你可以调整。的像素值来控制模糊程度。
2023-08-23 10:08:42
74
原创 [CSS技巧] 剪辑路径
剪辑路径(Clip Path)是一种 CSS 技术,用于创建非矩形的图形剪辑区域。它可以将元素裁剪为不同的形状,如圆形、椭圆形、多边形或自定义路径。这为我们创造各种有趣和独特的设计效果提供了可能性。需要注意的是,剪辑路径的兼容性可能受到限制,特别是在旧版浏览器上。为确保广泛的兼容性,建议提供备用的剪辑路径方案,如使用背景图像或 SVG 剪辑路径。这只是一些基本示例,实际上你可以使用更复杂的路径来创建更精细的剪辑效果。属性中使用不同的函数、单位和值来调整剪辑路径的形状和位置。
2023-08-23 10:04:20
229
原创 使用vue3模拟Mac程序坞鼠标悬停动画
这样,当你将代码复制到 HTML 文件中并在浏览器中打开时,就可以看到 Vue 3 模拟 Mac 程序坞鼠标悬停动画的效果了。要使用 Vue 3 模拟 Mac 程序坞(Dock)鼠标悬停动画,你可以使用 Vue 的过渡效果和动态类绑定来实现。请确保在 HTML 文件中引入了 Vue.js 库,并将以上代码放置在正确的位置。在上述代码中,我们使用 Vue 3 创建了一个 Vue 应用,并定义了一个。在 HTML 中,我们使用 Vue 的指令。属性来切换项的样式。,从而改变项的样式。方法将 Dock 项的。
2023-08-23 09:51:42
358
原创 JavaScript 中的原型、对象原型、原型继承和原型链
当我们访问一个对象的属性时,如果对象本身没有该属性,JavaScript 将会查找该对象的原型链,直到找到具有相应属性的原型对象为止。当我们在一个对象上访问属性时,JavaScript 会首先在该对象本身查找,如果找不到,则沿着原型链向上查找,直到找到该属性或到达原型链的末尾(null),如果还没有找到则返回 undefined。JavaScript 是一种基于原型的编程语言,每个对象都有一个原型,而原型又可以拥有自己的原型,形成一个原型链。对象原型指向了该对象的父级对象或者说是该对象的构造函数的原型。
2023-08-23 09:44:37
36
原创 TypeORM 实体存储数字并保留小数点后3位
请注意,在数据库中存储小数时,应选择适当的字段类型和精度以确保数据的准确性和一致性。字段的有效性和准确性,保留小数点后三位。属性来定义实体中数字字段的数据类型,并且可以通过。属性来设置保留小数点后的位数。属性表示总位数(整数位数 + 小数位数),而。当保存实体时,TypeORM 将确保。在 TypeORM 中,可以使用。字段的数据类型被设置为。
2023-08-22 17:42:45
406
原创 [Nestjs]使用PM2部署简单介绍
通过以上步骤,你就可以使用 PM2 部署和管理 Nest.js 应用程序了。PM2 提供了很多功能,如进程管理、日志管理、自动重启等,可以帮助提高应用程序的可靠性和稳定性。:PM2 提供了一系列的命令来管理应用程序,例如启动、停止、重启、删除等。:首先,确保已在服务器上安装了 Node.js 和 npm。:为了方便管理和监控应用程序,我们可以创建一个 PM2 启动脚本。在项目根目录下创建一个。要使用 PM2 部署 Nest.js 代码。
2023-08-22 17:24:06
1269
原创 使用PM2和Docker部署的差异以及各自的优点有哪些?
综上所述,PM2 更注重进程管理和应用程序的稳定性,而 Docker 更注重环境隔离、可移植性和版本控制。根据你的需求和部署方式选择合适的工具。在某些情况下,也可以结合使用 PM2 和 Docker,例如将使用 PM2 管理的 Node.js 应用程序放置在 Docker 容器中进行部署。PM2 是一个进程管理工具,而 Docker 是一个容器化平台。它们在部署方式、优点和用途上有一些差异。
2023-08-22 17:04:24
804
原创 [Nestjs] 使用redis的基础配置,以及基本使用的介绍
要在 NestJS 中使用 Redis,需要安装依赖npm install --save redis fastify-redis。来展示如何设置、获取和删除缓存数据。来连接和配置 Redis。标记注入缓存管理器,并通过。标记注入 Redis 实例。以上步骤中,我们使用。
2023-08-22 16:56:27
609
原创 css3实现动画无限循环
你可以根据需要调整关键帧的百分比和对应的样式,以创建不同效果的动画。要在CSS3中实现动画的无限循环,你可以使用。属性将该动画应用到一个元素上。即动画的时长为2秒,并且使用。关键字来表示动画应该无限循环。在上面的示例中,我们首先使用。
2023-08-22 16:39:13
6862
原创 使用css实现文字横向滚动循环
通过调整动画的持续时间、缓动函数和偏移量,你可以自定义滚动循环的速度和效果。要实现文字横向滚动循环效果,可以使用 CSS 的动画和。属性的容器,用于隐藏超出容器宽度的文本部分。是包含滚动文本的内联元素,通过设置。将文本向右移动到容器的最右侧。的关键帧中,文本向左平移。定义了动画的关键帧。,表示文本不发生偏移。表示动画无限循环播放。,实现了横向滚动效果。
2023-08-22 12:18:48
4583
原创 [Nestjs] 使用ncc加快启动速度
通过以上步骤,你可以使用 ncc 加快 NestJS 应用程序的启动速度。将应用程序打包成单个可执行文件可以减少启动时的文件读取和模块加载时间,从而提高应用程序的启动性能。通过使用 ncc 可以将 NestJS 应用程序打包成一个单独的可执行文件,这可以加快应用程序的启动速度。:在使用 ncc 打包应用程序之前,必须先构建 NestJS 应用程序。:接下来,你可以使用 ncc 命令将应用程序打包成一个单独的可执行文件。上述脚本将直接启动打包后的应用程序,而不需要通过 NestJS CLI 进行启动。
2023-08-22 11:55:36
400
原创 [NsetJs] 使用websocket简单介绍
WebSocket 协议包含了一个标准化的握手过程,通过 HTTP 协议进行升级请求,一旦握手成功,连接将升级到 WebSocket,之后的通信交换将遵循 WebSocket 协议规范。:WebSocket 使用二进制数据格式进行通信,相对于传统的基于文本的 HTTP 通信,它可以减少数据传输的开销。:WebSocket 具有灵活的握手协议,可以进行自定义的握手过程,并且支持扩展协议,可用于满足特定应用需求。:由于持久连接和双向通信的特性,WebSocket 提供了较低的延迟,可以更快地进行实时通信。
2023-08-22 11:33:41
519
原创 [Nestjs] 集成定时器以及使用方法
在后台开发中,我们经常遇到定时的需求,比如每天早上八点推送日志,推送待办,推送天气预报等。接下来简单介绍Nestjs集成定时器的简单使用方法!:在需要使用定时任务的地方,比如控制器或者其他服务中,将定时任务的类注入进来,并调用其方法。装饰器来指定定时任务的执行时间。可以使用 Cron 表达式或者预定义的字符串(如。模块,它提供了一种简单而强大的方式来执行定时任务。:在任何一个可注入类(比如服务)中创建定时任务。:在你的 NestJS 应用的根模块(通常是。在 NestJS 中集成定时器可以使用。
2023-08-22 10:29:09
515
原创 [Nestjs] 集成 Swagger
这样,你就成功将 Swagger 集成到了你的 NestJS 应用中。现在你可以使用 Swagger 自动生成的文档来描述和测试你的 API 接口。路径即可查看 Swagger UI 界面,并浏览和测试 API。方法中的参数,以反映你自己的 API 标题、描述和版本。:启动你的 NestJS 应用程序,在浏览器中访问。如有进一步的问题,请随时提问。:在你的 NestJS 应用的根模块(通常是。:首先,使用 npm 或者 yarn 安装。装饰器,并指定与该控制器相关的标签。上述代码中,你需要调整。
2023-08-22 10:16:44
296
原创 [Nestjs] 使用Typeorm 在实体中根据时间生成随机编码
这样我们保存数据的时候,实体会自动生成code字段编码,大家可以根据自己的需求调整相应的代码!在日常开发中,我们会遇到很多需要自动生成编码的地方,比如订单号,单据号等。
2023-08-21 00:07:13
163
原创 [Nestjs] 使用log4js-node实现日志生成
的文件,并配置日志输出的格式、级别、路径等信息。:在你的项目中创建一个日志模块,用于处理日志相关的逻辑。,并配置了最大日志文件大小、备份文件数和日志布局。输出到控制台,并设置了简化的日志布局。你可以通过在代码中调用。方法,根据需要记录不同级别的日志信息。:使用 npm 或 yarn 安装。这样,你就在 NestJS 中使用。:生成一个日志提供者,用于初始化。:在项目根目录下创建一个名为。并将其注入到其他模块中。:在日志提供者中,初始化。
2023-08-20 23:44:17
389
原创 [Nestjs] 实现生成图形验证码以及校验过程
路由获取生成的验证码图片,并将验证码文本存储在会话中。然后,在验证用户提交的验证码时,发送 POST 请求到。:在验证码控制器中,编写生成和发送验证码图片的接口。:为了防止恶意攻击者进行暴力破解或滥用验证码接口,你可以添加限制请求次数的措施,例如使用。这样,你就在 NestJS 中实现了基于会话的图形验证码校验过程。请注意,上述代码仅提供了一个基本的实现示例,你可以根据自己的需求进行修改和扩展。路由,并将用户输入的验证码作为请求体中的数据。:在验证码控制器中,编写用于校验验证码的接口。
2023-08-20 23:35:48
747
原创 [Nestjs] 使用Typeorm配置数据库配置时区的方法
在实际开发中,还可能存在其他导致时间不准确的因素,如时钟漂移、不同服务器之间的时钟不一致等。因此,建议综合考虑操作系统、数据库服务器、应用程序服务器以及数据库连接配置等因素,保证时间的准确性。:如果数据库支持,可以使用数据库的内置时间函数来获取、计算和存储时间值,而不是依赖应用程序服务器的时间。:确保数据库服务器的时间是准确的,并且与应用程序运行的服务器时间同步。属性,将数据库连接的时区设置为与应用程序所在地区相匹配。:如果需要在数据库中存储时间戳信息,可以使用 TypeORM 提供的。
2023-08-20 23:13:49
1276
原创 [Nestjs] 手摸手之简单封装API接口的返回结果
这样,当你调用这些接口时,它们会自动使用定义的拦截器进行统一的响应封装,返回相应的数据结构。你可以自行根据需求修改拦截器中的状态码、消息和数据结构等内容。在 NestJs 中,你可以自定义一个统一的响应封装来支持成功、错误和分页响应。然后,在你的控制器中使用这些拦截器来实现统一的响应封装。
2023-08-19 13:36:23
955
原创 [JavaScript] 闭包的概念以及示例
在上面的示例中,outerFunction 是一个外部函数,它包含了内部函数 innerFunction。但需要注意的是,由于闭包会引用外部函数的变量,如果外部函数中的变量占用较大的内存空间,没有及时释放,则可能造成内存泄漏的问题,因此在使用闭包时需要谨慎考虑内存管理的问题。闭包是指函数内部可以访问外部函数的变量,即使外部函数已经执行完毕,这些变量仍然可以被内部函数访问和使用。在 JavaScript 中,由于函数是一等对象,因此函数可以作为返回值或参数传递给其他函数,这就为闭包的实现提供了可能性。
2023-08-19 12:19:44
29
原创 [JavaScript]常见算法介绍「递归算法」
接受一个参数 n,表示要计算斐波那契数列的第 n 个数字。如果 n 小于等于 1,直接返回 n。否则,递归调用 fibonacci 函数计算第 n-1 和 n-2 个数字,并将它们相加返回。递归是一种在函数中调用自身的方法。它通常用于解决可以被分解成较小且与原问题结构相似的子问题的情况。来输出斐波那契数列的第 6 个数字,结果为 8。在代码的最后一行,调用。
2023-08-18 18:00:22
30
原创 [JavaScript] 常用算法介绍「冒泡算法」
JS中的冒泡排序算法(Bubble Sort)是一种简单而常用的排序算法。它通过多次迭代比较相邻的元素,并根据需要交换它们的位置,使得每一轮迭代都能找到当前数据集中的最大(或最小)值,并将其移至合适的位置。冒泡排序的名称来自于排序过程中较大(或较小)的元素会逐渐"冒泡"到数组的末尾(或开头)。由于每一轮只将一个元素放置到其最终位置,所以它的时间复杂度为O(n^2),其中n是待排序数组的长度。冒泡排序算法简单易理解,但对于大规模数据集效率较低,因此在实际应用中往往采取其他更高效的排序算法。
2023-08-18 14:21:56
195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人