自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 vue3编程 -动态多开模态框实现方案

采用v-for提前生成多个模态框实例,采用这种方案的案例社区已经很多。

2024-08-24 21:37:23 371

原创 Nodejs编程:TypeORM中,Repository、EntityManager、QueryBuilder、QueryRunner的区别?

Repository适用于简单的 CRUD 操作,尤其是对于单个实体。提供了更多的灵活性,适用于跨实体的操作和事务管理。适用于构建复杂的查询,尤其是在需要组合多个表的情况下。专门用于事务管理,可以执行原生 SQL 或者使用的功能。在实际应用中,你可能会根据具体的需求选择使用其中之一或者将它们结合使用。

2024-08-06 10:51:21 565

原创 Nodjs编程-typeorm实体管理器

/ ... 做一些需要的操作// 或connection.getCustomRepository或manager.getCustomRepository()// 和 const user = new User();一样。

2024-08-06 09:50:45 855

原创 Nodejs编程-typeorm实体和实体关系

type ,name, length, width, onUpdate, nullable, update, select, default, primary,(同@返回的对象可以connect(),也可以release()connection.getRepository(User): 获取给定实体的repository,后面用返回的对象进行增删改查。getConnection().manager : 对应createConnection()Eager 的关系只能用于关系的一方,在关系的两边使用。

2024-08-06 08:58:11 1003

原创 vue-router核心TS类型

当用户通过浏览器的前进/后退按钮或者通过其他方式(如程序逻辑触发的导航)在不同的路由之间导航时,Vue Router 会利用浏览器的history的 API (history.pushState, history.replaceState) 来管理这些导航。就是Route实例对象的类型的基类型。当使用 router.push() 或 router.replace() 时传入的对象属性,这里只包含了部分。可以传入路由地址,可以传入布尔值,也可以传入一个回调函数,传入回调函数的场景很少用到。

2024-07-31 09:26:47 1100

原创 Pinia

比起普通的 watch(),使用 $subscribe() 的好处是 subscriptions 在 patch 后只触发一次.是组合式API,其中ref,computed,函数代表了state, getter, actions。这种编程方式更灵活,同时,还可以使用provide,useRoute()函数等。是 Vue 3 中的一个实用函数,用于标记一个对象使其不再被 Vue 的响应系统追踪。action中定义的函数,可以通过同步和异步的方式来修改state。作为第二个参数,当组件被卸载时,数据依然保留。

2024-07-29 11:55:55 978

原创 vue3编程-import.meta.glob实现动态路由(菜单)

component需要按需加载,因此需要将route.component的值变为()=>import()的形式。vite本地构建使用的是esbuild,本地服务之所以能够识别.vue文件,是因为本地服务做了支撑。本地服务器返回了javascript代码,这个也容易实现,服务器判断如果是.vue结尾的,对源码进行编译响应为js即可。打包构建后的代码,modules的key是不变的。但是值函数却变了,里面导入的是构建后的.js文件。这样就能够实现兼容本地和打包构建后的动态菜单的功能,而原理就是上面分析的。

2024-07-23 18:29:56 714

原创 Rust编程- 函数指针与返回闭包

函数会在传递的过程中被强制转换成fn类型,区别闭包的Fn。由于函数指针实现了全部3种闭包trait(Fn、FnMut以及FnOnce),所以我们总是可以把。通过Box<dyn Fn(i32)->i32> 通过trait对象来实现返回类型是闭包。闭包使用了trait来进行表达,所以你无法在函数中直接返回一个闭包。构造器视作实现了闭包trait的函数指针,并在那些接收闭包的方法中使用它们,例如。因此,我们可以直接指定fn为参数类型,而。使用函数指针的场景:C函数可以接收函数作为参数,但它却没有闭包。

2024-07-22 16:00:41 388

原创 Rust编程-高级特性

我们使用的"C"ABI正是C编程语言的ABI,它也是最常见的ABI格式之。trait定义的前面加上unsafe关键字,该trait也只能在unsafe代码块中实现。中并提供一套安全的API,防止unsafe代码泄漏到任何调用它的地方,因为使用安全抽象总会是安全的。任何在extern块中声明的函数都是不安全的。关键字unsafe来切换到不安全模式,并在被标记后的代码块中使用不安全代码。单独的unsafe代码块中调用不安全的函数。常量和不可变静态变量:静态变量的值在内存中拥有固定的地址,使用它的值。

2024-07-22 12:57:54 1120

原创 Rust编程-模式匹配

条件中的y就是来自表达式外部的y, 匹配守卫if n == y不是一个模式,所以它不会引入新的变量.能够比较n和y的值是否相同。组成:字面量、解体的数组、元组、枚举、结构体 、变量、通配符、占位符等组件组成。可以混用if let 、else if、else if let 、else。会匹配到第二个分支,这里的y在match创建的作用域内,是一个新的变量,不是x后面的y变量。可以使用使用_或..语法忽略元组中的元素,_只能匹配一个,.. 可以匹配多个。@运算符允许在测试一个值是否匹配模式的同时。

2024-07-21 17:40:43 683

原创 Rust编程-类面向对象编程

因为编译器无法知晓所有能够用于trait对象的具体类型,所以它无法在编译时确定需要调用哪个类型的哪个具体方法。在泛型使用trait约束时执行单态化,编译器会为每一个具体类型生成对应泛型函数和泛型方法的非泛型实现,并使用这些具体的类型来替换泛型参数。trait中也可以默认实现,具体实现时,可以覆盖trait中的默认实现。在rust中可以使用泛型来构建不同类型的抽象,并使用trait约束来限制泛型,从而实现多态。Rust类型系统都会在编译时确保出现在相应位置上的值实现trait对象指定的trait。

2024-07-19 23:20:28 468

原创 vue3- 内置指令的响应式

然而,通过猜想,原因可能是内置自定义指令v-for,通过实验得出,确实是v-for的绑定导致的响应式。该方案使用reactive()创建响应式,因为有分页和查询需求,所以ajax请求响应后tableData数组先通过length属性进行清空,再通过push添加元素。和团队成员讨论,可能是因为接口响应很快,页面还没挂在,tableData的值变化后才挂载的。该方案变量没有初始响应式,ajax请求响应后直接赋值,页面竟然重新渲染了。我们要解决的是数据的初始化,能不能先不用响应式呢?

2024-07-18 11:02:25 421

原创 Rust编程-crates.io

发布前的准备工作:1. 创建账户2. 存储API令牌3. 为包选择名称等任务4. 指定了必要的元数据。

2024-07-16 10:03:18 696

原创 Rust编程-函数式编程

这也就意味着创建迭代器后,除非你主动调用方法来消耗并使用迭代器,否则它们不会产生任何的实际效果。闭包在结构体中必须指明类型,因为结构体中各个字段的类型在定义时就必须确定。Fn的trait约束中添加代表了闭包参数和闭包返回值的类型。闭包可以捕获自己所在的环境并访问自己被定义时的作用域中的变量。闭包必须在定义时取得这些变量的所有权并将它们移动至闭包中。所有的闭包都至少实现了标准库中提供的Fn、 FnMut及FnOnce中的一个trait。返回一个可变引用的迭代器,允许你遍历集合并可能修改其中的元素。

2024-07-13 22:41:21 708

原创 Rust编程-I/O

参数是args,类型是字符串切片。函数的返回类型是Result枚举,如果函数执行正常则返回Ok(Config),如果函数发生了panic,则返回Err(&' static str)。其中,static是静态生命周期,表示程序运行期间它都有效,而字符串切片是直接存放在编译后的二进制文件中的,因此它拥有static生命周期。对于异常,new函数采用的是return的方式,这样可以让上层调用者自行选择如何处理异常。读取文件的I/O函数是std::fs模块,函数是read_to_string(),参数是文件路径。

2024-07-13 11:23:31 973

原创 nestjs编程-nestjs装饰器

1. 装饰器能够提供编码的便捷,部分装饰器可以不用,Request和Response直接获取也没问题,装饰器主打一个方面2. 学习装饰器前,最好先学习下装饰器的基本原理。

2024-07-12 10:45:45 534

原创 Rust编程-编写自动化测试

任何在assert!、assert_eq!或assert_ne!的必要参数之后出现的参数都会一起被传递给format!assert!其中,第二个参数会被传给format!宏。

2024-07-08 21:16:52 648

原创 Rust编程-泛型、Trait和生命周期

1. 泛型:允许代码应用于不同类型2.trait与trait约束:在代码中指定泛型的行为3. 生命周期:用来确保代码不会出现悬垂引用。

2024-07-07 20:08:45 742

原创 TypeScript编程-module

开发过程中,存在很多模块都需要引入的类型,通过import type 引入又比较麻烦,因此可以通过创建global.d.ts文件来实现在全局作用域空间定义类型:declare global { // global没有引号to: string需要注意的是declare后面跟的是global,没有用引号引起来。根据TypeScript的模块的基本原理,如果这个页面里没有import、export 的话,那么类型就属于全局空间。因此,可以将declare global删除,

2024-07-05 18:01:53 293

原创 Rust编程-错误处理

std::io::ErrorKind: 它是一个枚举,表示I/O错误的类型。ErrorKind用于对I/O错误的类型进行分类,使其更容易处理和响应不同类型的错误。std::error::Error: 表示一个泛型的错误类型的trait。std::io::Error: 表示I/O错误的类型。它包含一个ErrorKind和一个可选的错误消息,用于表示I/O操作过程中的错误,例如文件I/O,网络I/O或其他类型的I/O。当Result的返回值是Ok变体时,unwrap就会返回Ok内部的值。放置于Result值。

2024-07-04 09:21:32 816

原创 Rust编程-通用集合类型

创建空的HashMap。

2024-07-02 10:14:52 651

原创 Rust编程-包、模块、单元包

1. 包可以类比前端工程2. 单元包分为二进制单元包和库单元包。二进制单元包就是开发当前业务系统;库单元包是为了开发组件库(类比npm组件)。1. 模块的作用主要是功能相关的代码分组到一起2. 条目是模块的组成部分,包含变量、结构体、枚举、子节点等3. 路径是访问条目的路径。是条目在模块树的节点的路径。文章引字《Rust权威指南》一书。通过整理让概念和知识点更加条理清晰。本章都是概念知识很简单,但是需要把知识点梳理清楚。

2024-06-29 21:40:16 906

原创 Rust编程-枚举

("{:?}",self);这里的self就是指向媒体变体。不要和struct弄混了,不可以通过0,1,2访问枚举变体里的值。Penny,Nickel,Dime,Quarter,match,它允许将一个值与一系列的模式相比较,并根据匹配的模式执行相应代码其中,模式指的是match模块中的Coin::Penny,如果coin是该枚举变体,那么就会执行后面的代码。其他模式可以是模字面量、变量名、通配符等。

2024-06-28 21:50:59 396

原创 TypeScript编程:Vue3开发环境搭建

5.需要使用 ES 模块的特性:如果您的项目需要使用 ES 模块的特性,例如动态导入(dynamic import)或导出(export),那么需要将编译后的 JavaScript 输出保持为 ES 模块语法。4.需要与其他 ES 模块兼容:如果您的项目需要与其他使用 ES 模块的项目或库集成,那么需要将编译后的 JavaScript 输出保持为 ES 模块语法,以确保兼容性。在编译过程中,TypeScript需要知道如何创建元素,这就是jsxFactory配置选项的作用。

2024-06-28 14:33:34 730

原创 Rust编程-结构体

关键字:struct属性名:属性值类型关键字impl(implementation),表示实现的意思,用于定义结构体的函数self关键字:表示当前结构体。Rust能够将self的类型推导为Rectanglewidth:u32,这里使用的是&self,是Rectangle的借用。将第一个参数标记为self并在调用过程中取得实例的所有权的方法并不常见。self的类型。在给出调用者和方法名的前提下。

2024-06-26 22:58:18 469

原创 Rust编程——所有权

• 在任何一段给定的时间里,你要么只能拥有一个可变引用,要么只能拥有任意数量的不可变引用。• 引用总是有效的。

2024-06-26 22:57:47 911

原创 vite编程-依赖预构建

1. optimizeDeps是针对本地研发环境的依赖进行优化2. optimizeDeps.include能够解决的问题:a. vite的依赖启发式算法无法发现的依赖(例如,源码中没有import,但是babel转换成esModule后又有了import),可以添加到include中b. 如果依赖是commonJS,且非npm安装的,可以通过include进行转码。

2024-06-26 15:52:14 897

原创 vite编程-Gzip

如果压缩占用的时间,比传输减少的时间多,那么就没必要采用Gzip压缩。大量的gzip压缩处理,势必会影响服务器的响应处理时间。前端提前做gzip的压缩处理,可以减少服务器端CPU的压力。从配置可以看出,可以配置最小压缩文件大小,压缩登记、压缩文件的类型。gzip是GNU Zip的简称,是一个在Linux和其他类Unix系统中广泛使用的命令行压缩工具。GZIP能够压缩服务器端的文件,减小Http传输过程文件的体积,在相同带宽前提下,减少传输时间。gzip可以压缩任何类型的文件,但特别适合文本文件,因为它。

2024-06-25 15:56:31 299

原创 vite编程-CDN

CDN通过在全球多个地区部署缓存服务器节点,当用户访问网站时,CDN系统会根据用户的地理位置、网络状况以及各节点的负载情况,将用户请求重定向到离用户最近或者响应最快的服务器节点上,从而减少网络延迟并提高内容加载速度。最开始接触CDN是在上家单位,2014年H5非常火爆,可以上下滑动、左右滑动,有炫酷的动画效果,可以开发3D效果,火的一塌糊涂,也是前端在互联网世界崛起的时候。vite配置CDN的方法在vite的官方网站里并没有给出具体的说明,也没有说明使用哪个插件。然后,说的最多的一句话就是"

2024-06-22 17:01:49 834

原创 Rust编程-通用编程概念

3. 对于一个位数为n 的有符号整数类型,它可以存储从-(2^ (n -1) )到2 ^(n -1)-1范围内的所有整数;除了Byte,其余所有的字面量都可以使用类型后缀,比如57u8,代表一个使用了u8类型的整数57。隐藏机制与mut的另一个区别在于:由于重复使用let关键字会创建出新的变量,所以我们可以在复用变量名称的同时改变它的类型。Rust中的数组拥有固定的长度,一旦声明就再也不能随意更改大小。通过使用let,我们可以对这个值执行一系列的变换操作,并允许这个变量在操作完成后保持自己的不可变性。

2024-06-21 23:10:27 620

原创 vite编程-manualChunks

output.manualChunks的配置类型是:(来自官方)

2024-06-21 15:28:05 1179 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除