- 博客(85)
- 资源 (3)
- 收藏
- 关注
原创 Koa + Prisma 快速入门
作为 ORM 工具,肯定少不了模型了。构成了应用领域的实体映射到数据库的表(关系型数据库,例如 PostgreSQL)或集合(MongoDB)构成中查询的基础在使用 TypeScript 时,Prisma Client 为模型及其变体提供类型定义,保证数据库访问的类型安全定义模型时会用到形如@id()@default()这些 Prisma 内置的工具函数。比如@id()用来声明主键,@default()用来设置默认值,命名都非常语义化,基本就是 SQL 中的一些关键字,非常容易理解。
2023-08-30 09:00:00 912
原创 【MongoDB系列】3. MongoDB 安全策略:验证和授权
前面文章中通过客户端工具(MongoDB Shell、Robo 3T)连接 MongoDB 服务时,只要有 IP 地址和端口号,就能连接到数据库,之后就能操作数据库。这是因为默认安装的 MongoDB 没有启用身份验证,也没有设置初始用户名和密码。然而这会导致很多数据安全问题。MongoDB 提供了多种方式来提高数据库的安全性,例如身份验证访问控制加密等。本文主要介绍 MongoDB 提供的内置角色和权限,然后通过开启身份验证,为用户指定不同的访问权限,来提供数据库的安全性。
2023-08-29 09:15:00 1735
原创 【MongoDB系列】2. Docker 安装 MongoDB 6.x 详解
本文详细介绍了在 Linux 系统中通过 Docker 下载 mongo 镜像,创建 mongo 容器的过程,同时介绍了宿主机访问容器内数据库服务的方式,也介绍了在本地远程访问服务器内数据库服务的方式。对于 Robo 3T 这个工具,非常好用,推荐使用。数据库是运行在宿主机,还是容器内,其实都一样的对外提供了服务,我们只需要关注操作数据库即可。目前我们安装的 MongoDB 都还没有设置用户名和密码,这十分不安全。所以在真正开始操作数据库之前,下篇文章我们先介绍 MongoDB 的安全策略。
2023-08-28 09:15:00 936
原创 【MongoDB系列】1.MongoDB 6.x 在 Windows 和 Linux 下的安装教程(详细)
本文详细介绍了如何在 Windows、Linux 下安装最新版的 MongoDB 数据库。相比于 5.x,新版本的 MongoDB 在安装时的变化是将从前的mongo命令废弃,需要用户单独安装 MongoDB Shell 来操作数据库。如果不需要使用 shell ,则可以省去这一步。
2023-08-27 14:37:01 645
原创 Nest(3):扫盲篇:TypeScript 类和装饰器
使用 @nestjs/cli 创建和管理 Nest 应用Hello, World 示例代码分析Nest 基本概念:模块,控制器,服务常用的装饰器:@Module、@Controller、@Get、@InjectableNest 目录结构分析@nest/cli 脚手架的命令本文先不继续讲解 Nest 中的内容,而是打算介绍 TypeScript 中的两个语法:类和装饰器,帮助新手理解 Nest 中代码的写法。如果你对 TypeScript 已经很熟悉,根据自己实际情况有选择的阅读即可。
2023-08-22 11:45:00 277
原创 Nest(2):Nest 应用目录结构和脚手架命令介绍
在正式使用 NestJS 进行开发之前,先来了解下 Nest 应用的目录结构,和一些常用的脚本命令。打开文件,@nest/cli创建的项目提供了 12 个scripts},build:打包适合生产环境的代码。start:开发阶段启动 Nest 应用。使用该命令时,修改代码后需要手动重启服务。start:dev:带有 watch 选项,也就是修改代码后会自动重启服务,所以在开发阶段一般使用此 script。start:prod:它实际上是用 node 命令启动了一个构建产物的入口文件。
2023-08-21 14:47:03 930
原创 NestJS(1)初识 NestJS 和 Hello, World
本文介绍了使用 @nest/cli 脚手架快速创建和启动一个 Nest 应用,随后又对“Hello, World”示例代码做了分析,简单介绍了一些 TypeSscript 语法,比如装饰器,和一些 Nest 的概念。相信看到这里,大家基本上了解了 Nest 应用接收到用户请求后,走了哪些流程,完成了响应。
2023-04-23 21:18:49 584 1
原创 记一次误用顶层await导致的路由渲染错误
起初按照直觉,以为是路由表配置出了问题,导致路由渲染不出来,反复调试路由配置,始终不奏效。这就导致了一个问题,想使用 await,必须要将其定义在一个 async 函数中,再调用此函数。,它 支持在 async 函数以外使用 await,但是只能在一个模块的顶层中使用。之所以被渲染成注释节点,看似是路由组件没有正确渲染,也有可能是组件本身出了问题。这自然不是在模块顶层中使用了,也就导致了在解析上出现问题,导致组件不能正确渲染,最终导致对应的路由视图没有渲染出来。起初由于空页面,空节点,误解是路由的问题。
2023-04-22 15:45:06 3845 1
原创 报错处理:Error: listen EACCES: permission denied
试着使用管理员打开命令行窗口,再启动,不行。看名字,像是没有权限访问 5173 端口。试着查 5173 端口是否被占用,没有。一般遇到这种莫名其妙的问题,重启就好了。莫名其妙的一个错误。
2023-03-09 19:15:00 4864
原创 Node.js http 模块详解:request 对象
前文介绍了http模块的基本用法,主要就是调用和listen方法来创建和启动服务。要处理具体的 HTTP 请求,就要在方法中写点什么。本文来介绍处理请求的两个核心对象之一的request。本文介绍了通过requestrequest.method:获取请求方法request.url:获取请求 URL,还需要再借助url等工具进一步解析request.headers:获取请求头信息request.body:获取请求体数据,需要根据解析为不同的格式下篇文章会介绍reponse。
2023-02-10 09:00:00 3648
原创 Node.js http 模块详解(1)
我们介绍了http模块的基本用法,主要使用来创建服务,再调用listen方法来启动服务,监听连接。接收回调函数用来具体处理某一个请求,编写 web 服务主要就是利用回调函数的两个参数request和response,后面会详细介绍。
2023-02-09 00:15:00 484
原创 Node.js 入门:events 模块和发布订阅模式
本文会介绍 events 模块的主要作用和使用方式,以及自己实现一个简单的发布订阅模式,帮助加深理解。本文介绍了 Node.js 中events模块的使用,它主要导出一个类来做发布订阅。Node.js 的很多核心模块都继承自 EventEmitter 类。它是一个底层的模块,但通常很少直接使用它。等后面讲到 Stream,再后面讲到 http 模块的时候,就能体会到它的存在了。额外提一嘴,手写实现,并不是要重复造轮子,主要是为了加深对原生方法的理解。
2023-02-08 08:45:00 1395
原创 Node.js入门:fs 模块学习
fs模块是 Node.js 的内置模块,提供操作文件系统的能力,比如文件及目录的创建、写入及删除等操作。它是一个十分基础和有用的模块。Node.js 常用作 web 服务或者工具的开发,最依赖的就是 http 和 fs 模块。在fs模块中,所有的方法都分为同步和异步两种实现。在很久以前,node 还不支持 Promise 的时代,异步只能通过回调的方式去使用。
2023-02-07 09:00:00 445
原创 Node.js入门:Buffer对象学习
计算机底层存储的数据都是二进制的。在前端开发中一般都是实现页面效果,很少会直接操作二进制的数据。而在 Node.js 擅长的领域,比如在服务端程序开发中,经常会读取文件,处理文件,和二进制数据打交道比较多。Buffer对象是 Node.js 提供的一个全局对象,专门用来处理二进制数据。二进制数据在开发中,操作和表示都非常不方便,所以 Buffer 对象采用十六进制来表示二进制数据。比如二进制数据00001111,转为十六进制就是f。
2023-02-06 09:00:00 1897
原创 Node.js入门:path 模块学习
上文讲解了 Node.js 的 CommonJS 规范,它主要用来解决模块化的问题。从本文开始将会介绍 Node.js 常用的模块,包括内置模块以及好用,好玩的第三方模块。本篇简单介绍下path模块的用法。
2023-02-05 09:00:00 619
原创 Node.js:CommonJS模块化规范
参数是一个文件路径,以./../或者开头。// 此时会当作内置模块查找,自然是找不到的,会报错// 必须以 ./、 ../、 / 开头// 找到同级目录下的 a.js 并导入会依次去找有没有a.jsa.jsona.node,找到则导入模块;没有的话,会将a当作一个目录名,去找a目录下的index.jsindex.jsonindex.node,找到则导入模块。如果还没有找到,则报错找不到模块。
2023-02-04 08:30:00 692 1
原创 Node.js 全局对象介绍
在学习 Javascript 之初,会接触一个概念:JS 由三部分组成,。其中前两者是宿主环境,也就是浏览器所提供的能力。后者才是 JS 语言本身的标准。在上篇文章中,提到了,所以学习 Node.js 时,除了我们已经掌握的 JS 基础功底,还要了解 Node.js 宿主环境提供的一些能力。
2023-02-03 00:49:30 653
转载 CSS Grid 网格布局教程
网格布局(Grid)是最强大的 CSS 布局方案。它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了。上图这样的布局,就是 Grid 布局的拿手好戏。Grid 布局与Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。
2022-12-13 21:34:20 316
原创 手摸手教你使用 Docker 快速搭建 Gitlab 服务
Glitlab 比较占用内存,官方建议最低配置为 2核4G。我的服务器刚刚好是2核4G,但是还装了 Docker 跑一些其他服务,所以以防万一,还是选择在本地的虚拟机中进行安装。如果你有一台配置较高的服务器那就更好了,一步到位。如果不想装虚拟机,服务器又太贵,也可以选择按量付费的方式购买一台2核8G的服务器,最便宜的价格是每小时四毛钱左右,稍微好一些的配置七八毛,用不了几块钱,就能学会 Gitlab 的搭建和使用。
2022-11-16 09:30:00 1276
原创 Typescript 函数类型详解
本文介绍了TS 中有关函数的知识,包括函数的声明方式,如何声明函数类型,函数参数和返回值的类型,函数重载以及 this 的类型。大部分内容和 JS 中差不太多,主要是 this 类型和函数重载这两点,需要额外关注下。
2022-11-15 17:51:03 2829
原创 还不会用 TS 封装 Axios?我教你啊
Axios 的二次封装是一项基础工作,主要目的就是将一些常用的功能进行封装,简化后续网络请求的发送。JS 版本的封装大家都已经非常熟悉了,可以信手拈来。但是使用 TypeScript 对 Axios 进行封装,稍微就复杂了些。主要是由于 TS 引入了类型系统,带来了一些类型的束缚。对于 TS 不太熟悉的小伙伴就容易绕晕。熟悉 axios 封装,但在 TypeScript 中不知该如何下手。明确我们的封装目标:能用上TypeScript 带来的好处,类型检查(安全性)和语法提示(便捷性)。
2022-10-24 13:28:15 1448
原创 一个登录案例学会 Pinia
Pinia 号称下一代的 Vuex。经过初步体验,发现相比于 Vuex,Pinia 确实有了很大进步,最明显的就是删减了复杂的概念,简化了数据流转的过程,现在只剩下了 store、state、getters、actions 这四个核心概念。接下来使用一个用户登录的案例,来学习 Pinia 的使用。需要用到:我们会先 mock 一个简单的登录接口,然后介绍使用 Pinia 的基本流程,最后在组件中使用 Pinia,完成整个流程。创建 Vue 项目可以使用 create-vite 和 create-vue 这两
2022-10-16 13:46:19 1877
原创 原来我误会了 changeOrigin 这么多年
本文简单探讨了这个常见的配置项。用了这么多年,才发现一直“误会”了它。看来正应了那句老话:纸上得来终觉浅,绝知此事要躬行。
2022-10-08 10:48:06 6834 4
原创 Vite打包性能优化之开启Gzip压缩
在使用 vite 进行项目打包时,默认已经帮我们做了一些优化工作,比如代码的压缩,分包等等。除此之外,我们还有一些可选的优化策略,比如使用 CDN ,开启 Gzip 压缩等。本文会介绍在 vite 中使用插件来开启 Gzip 压缩。
2022-10-07 12:13:13 18469 1
原创 Rust学习之函数
今天学习的内容是 Rust 中的函数。从程序执行的角度看,它也属于流程控制的一种。但更多时候我们只把函数看作是对一个功能的封装。Rust 具备函数式编程的特性,函数是 Rust 中的重中之重。
2022-10-06 20:47:32 507
原创 Typescript 学习之对象类型
今天学习的内容是 Typescript 的对象类型。在 JS 中创建一个对象,通常使用对象字面量的形式,比如定义一个person之后就可以使用该对象,可以访问对象身上存在的属性,比如,甚至可以访问不存在的属性,比如person.xxx,都不会报错。
2022-10-05 23:04:44 1711
原创 Typescript 的数据类型
Typescript,就是给JavaScript加上了类型系统。Typescript是JavaScript的超集。只要掌握了JS,学起TS来并不会太难。本文整理了Typescript中的数据类型,作为学习 TS 的一道入门菜。
2022-10-04 11:09:35 885
原创 Rust(13):字符串类型
Rust 中表示字符串类型的方式有多种,和其他语言有很大的区别。本文讲述最常用的两种,分别是 &str`和 String 类型。
2022-10-02 15:04:29 297
转载 DNS 查询原理详解
通过 DNS 查询,得到域名的 IP 地址,才能访问网站。那么,DNS 查询到底是怎么完成的?本文通过实例,详细介绍背后的步骤。
2022-10-01 08:00:00 815
原创 【玩转 Cloud Studio】以 Rust 为例定制自己的开发环境
Cloud Studio 是腾讯云出品的一款云端开发工具,目前提供了对 Java,Node,Go,Python,.Net 的环境支持,基本上满足了绝大多数的开发者的需求。如果开发者工作的语言和环境不在上述之列,没关系,Cloud Studio 照样能满足你。本文以 Rust 为例分享如何搭建出专属的开发环境。Cloud Studio 的工作空间是 Ubuntu 系统,标准型提供了 2 核, 4 G 内存,8 GB 存储的配置,还可以根据需求升级配置,对于大部分场景完全够用了。
2022-09-29 00:49:04 455
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人