自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 资源 (3)
  • 收藏
  • 关注

原创 Angular项目改端口号

如果是生产环境(如通过 nginx 或 Node.js 部署),端口由部署的服务器配置决定,需修改对应的服务器配置文件(如 nginx.conf 或 server.js)。找到 projects -> [project-name] -> architect -> serve -> options。绑定 IP 允许局域网访问 ng serve --host 0.0.0.0 --port 4300。终止占用端口的进程(如 kill -9 $(lsof -t -i:4300))。

2025-03-28 11:47:25 295

原创 angular获取roleFormGroup的control值

在 Angular 中,如果你想获取 roleFormGroup 中某个控件的值,可以使用 get() 方法结合 value 属性。根据你的代码,你似乎想获取 functionRoles 控件的值,并手动设置它的值为 [‘1’, ‘4’]。这是正确的,但如果 functionRoles 是一个 FormArray(动态表单),可能需要用 patchValue() 或逐个设置值。获取值:this.roleFormGroup.get(‘controlName’)?是可选的,防止 get() 返回 null)。

2025-03-28 11:32:11 293

原创 根据给定的数组动态添加 FormControl

动态表单更新:如果后续需要删除控件,用 this.roleFormGroup.removeControl(controlName)。初始值:new FormControl([], []) 表示初始值为空数组,无同步校验器。

2025-03-28 11:27:00 228

原创 遍历树并过滤出叶子节点的key,value值

要遍历树并过滤出所有叶子节点(isLeaf: true)的 key 和 value 值,可以使用 递归 或 迭代 的方式。动态表单控件:用 addControl 添加 FormControl,控件名格式为 {key}_dataRoles。初始值:直接将叶子节点的 value 作为表单控件的初始值。遍历树:递归或迭代提取叶子节点的 key 和 value。方法 3:使用 Array.flatMap(函数式风格)动态添加表单控件(结合问题需求)方法 2:迭代遍历(栈实现)方法 1:递归遍历(推荐)

2025-03-28 11:21:01 201

原创 遍历树并过滤出叶子节点的key值

key 重复问题:你的示例数据中多个节点使用了相同的 key(如 “1000” 和 “1001”),确保业务逻辑允许这种情况。输出:去重后的叶子节点 key: [“1000”, “1001”, “1010”]性能优化:对于深层嵌套的大树,迭代(方法2)比递归更安全。方法 3:使用 Array.flatMap(函数式风格)方法 2:迭代遍历(栈实现)方法 1:递归遍历(推荐)

2025-03-28 11:13:18 109

原创 Angular 的 nz-tree(NG-ZORRO 树组件)中设置选中状态

nzCheckedKeys 和 formControl 同步:确保表单控件的值(如 select)与树的选中状态一致。性能优化:如果树节点较多,避免频繁更新 checkedKeys 或 expandedKeys。key 的唯一性:树节点的 key 必须唯一,否则选中状态会冲突。通过以上方法,你可以灵活控制 nz-tree 的选中状态!

2025-03-28 11:08:08 337

原创 NG-ZORRO 树结构的扁平化

如果需要 高性能虚拟滚动,建议考虑其他方案(如 cdk-virtual-scroll + 自定义树组件)。如果你有更具体的需求(例如 动态加载扁平数据),可以提供更多细节,我可以帮你优化实现!nz-tree 的数据结构是 嵌套的(nzData),而不是扁平的。使用 *ngFor + 缩进样式 模拟树形结构(适用于简单场景)。换用 Angular Material 的 (如果项目允许)。推荐使用原生嵌套结构(nzData),避免复杂转换。再转换为嵌套结构(nz-tree 需要的格式)。

2025-03-28 10:54:07 211

原创 NG-ZORRO中tree组件的getCheckedNodeList怎么使用

在 NG-ZORRO(Ant Design for Angular) 的 Tree 组件 中,getCheckedNodeList 方法用于获取当前选中的节点列表(包括半选状态节点)。nzCheckedKeys 是双向绑定的选中 key 数组,而 getCheckedNodeList 返回的是完整的节点对象(包含 title、children 等属性)。如果节点是异步加载的,调用 getCheckedNodeList 前需确保数据已渲染(可在 setTimeout 或数据加载完成的回调中调用)。

2025-03-28 10:42:51 384

原创 Git删除并重新推送远程分支操作

完成这些步骤后,新的远程分支 new-branch 将被推送到远程仓库。

2025-03-18 11:40:09 301

原创 合并pull request的过程

合并pull request的过程。

2025-03-14 14:47:10 239

原创 安装多个版本的nodejs-nvm

下载安装程序并运行,按照提示完成安装。Windows: 使用。

2025-03-04 13:16:30 220

原创 自定义 RouterLink 组件 v-slot custom

这个示例展示了如何使用 Vue Router 的 router-link 的 custom 属性和 v-slot 来实现高度自定义的路由导航组件。通过 v-slot,我们可以访问到 navigate 函数来控制导航,并可以根据路由的活动状态来动态改变按钮的样式。插槽:我们通过插槽传入了按钮的文本内容,例如 “Go to Home”、“Go to About” 等,允许每个链接自定义显示的文本。custom 属性:启用了 router-link 的自定义插槽,允许我们替换默认的。

2024-11-26 15:36:24 726

原创 vueuse中的useTemplateRefsList

在 v-for 中绑定 ref 到模板元素和组件的简写方式。

2024-11-26 14:25:56 578

原创 Vue3中的v-model

添加到组件 v-model 的修饰符将通过 modelModifiers prop 提供给组件。在下面的示例中,我们创建了一个组件,其中包含默认为空对象的 modelModifiers proptitle?: string,: {: {: {: {emit('update:modelValue' , false) emit('update:title' , '我要改变') }()emit('update:title', '我要改变')

2024-11-21 14:15:58 597

原创 Vue3中的TSX

在 Vue 3 中,有两种声明组件的方式。

2024-11-21 14:00:35 863

原创 Vue3中的兄弟组件传参与Mitt

实例方法已被移除,组件实例不再实现事件触发接口,因此大家熟悉的EventBus便无法使用了。在 Vue 3 中,兄弟组件之间传参无法直接进行,需要通过共同的父组件或全局状态管理工具来实现。3.使用方法通过emit派发, on 方法添加事件,off 方法移除,clear 清空所有。兄弟A组件更改从父组件provide过来的值,导致兄弟B组件inject的值也发生改变。兄弟组件可以通过父组件传递数据,利用事件 (emit) 和 props 实现通信。// 用于存储兄弟组件之间传递的数据。A组件派发(emit)

2024-11-21 13:10:28 960

原创 Vue3中的祖孙组件通信——provide&inject

在 Vue 3 中,provide 和 inject 是一对用于依赖注入的 API,可以在组件树中共享数据或功能,而无需通过 props 明确传递或使用事件进行通信。这对于管理共享状态、配置或服务特别有用。

2024-11-21 11:27:07 460

原创 Vue3中的父子组件通信——defineProps,defineEmits,defineExpose

defineProps 提供了一种简洁的方式来声明和处理组件的 props,尤其是在 Vue 3 的 Composition API 中。在 Vue 3 中,defineProps 是 Composition API 中的一个函数,用于在子组件中声明接收的 props。在这个例子中,defineProps 会返回一个 props 对象,你可以在组件中通过解构或直接引用来访问传递进来的 props。语法糖,在常规的 Vue 3 Composition API 中,你还是需要使用 props 选项。

2024-11-16 16:45:59 1854

原创 认识Reactive全家桶

这样赋值页面是不会变化的因为会脱离响应式。

2024-11-13 20:19:49 227

原创 代码赏析(1)

作用域插槽keep-alive的include属性动态组件

2024-11-12 17:11:15 322

原创 toRef,toRefs,toRaw的用法

【代码】toRef,toRefs,toRaw。

2024-11-11 22:25:23 296

原创 JavaScript 库-qs的使用

qs 是一个常用的 JavaScript 库(全称为 query-string 或 qs),它用于处理 URL 查询字符串。qs.parse(query) 会将查询字符串解析成一个对象。假设有一个查询字符串 param1=value1¶m2=value2,语句解析:qs.parse(query)

2024-11-09 21:12:48 509

原创 可选链操作符(Optional Chaining)

它允许你安全地访问对象的嵌套属性,而不会因为中间某个属性为 null 或 undefined 而导致程序抛出错误。

2024-11-06 19:16:34 296

原创 CSS中的变量应用——:root,Sass变量,JavaScript中使用Sass变量,vue3中使用js中定义的响应式变量

在 SCSS 文件中定义 CSS 自定义属性。然后通过 JavaScript 读取这些属性。:root {使用示例.login {

2024-11-04 19:43:58 611

原创 芋道前端Vue项目中的配置文件

env.stage.env.prod.env.local.env.dev.gitignore。

2024-11-03 12:29:02 464

原创 Vite学习之模式

NODE_ENV=…可以在命令中设置,也可以在 .env 文件中设置。在某些情况下,若想在 vite build 时运行不同的模式来渲染不同的标题,你可以通过传递 --mode 选项标志来覆盖命令使用的默认模式。npx rimraf node_modules 这个命令是在使用 Node.js 开发时,用于删除项目中的 node_modules 文件夹的命令。使用 Node.js 运行 Vite 的构建命令,并手动设置 Node.js 的老生代内存限制为 8 GB,以确保在构建大型项目时有足够的内存可用。

2024-11-01 15:56:30 1350

原创 Vite学习之环境变量

随着在 .env[mode] 文件中自定义了越来越多的环境变量,你可能想要在代码中获取这些以 VITE_ 为前缀的用户自定义环境变量的 TypeScript 智能提示。如果环境变量在 import.meta.env 中不存在,比如不存在的 %NON_EXISTENT%,则会将被忽略而不被替换,这与 JS 中的 import.meta.env.NON_EXISTENT 不同,JS 中会被替换为 undefined。二、另外,Vite 执行时已经存在的环境变量有最高的优先级,不会被 .env 类文件覆盖。

2024-11-01 13:33:20 901

原创 速通TypeScript

注意:编码者没有编写return指定函数返回值,所以logMessage函数是没有显式返回值的,但会有一个隐式返回值 ,是undefined,虽然函数返回类型为void,但也是可以接受undefined的,简单记:undefined是void可以接受的一种“空”。泛型允许我们在定义函数、类或接口时,使用类型参数来表示未指定的类型,这些参数在具体使用时,才被指定具体的类型,泛型能让同一段代码适用于多种类型,同时仍然保持类型的安全性。TS会根据我们的代码,进行类型推导,例如下面代码中的变量d,只能存储数字。

2024-10-16 19:45:36 1073

原创 芋道后端模块功能开启

它由如下 3 部分组成:① yudao-spring-boot-starter-biz-pay (opens new window)组件:对接微信、支付宝等支付,提供统一的 PayClient 支付客户端 (opens new window)。② yudao-module-pay (opens new window)后端模块:实现支付中心的后端功能,包括支付、退款等能力。基于 PayClient 支付客户端,对接微信、支付宝等支付渠道。

2024-10-10 09:25:07 2077

原创 芋道前端utils文件夹

这些方法主要用于处理身份验证、登录表单和租户信息的存储和检索。它们使用了 wsCache 对象来进行缓存操作,并且在处理密码时使用了加密和解密函数。需要注意的是,这个文件中还定义了一些类型和常量,如 LoginFormType 和各种缓存键名。这些不是方法,但对于理解和使用这些方法很重要。

2024-10-09 15:41:19 470

原创 vue3组件通信之defineEmits

vue3:原生的DOM事件不管是放在标签身上、组件标签身上都是原生DOM事件,利用defineEmits方法返回函数触发自定义事件,defineEmits方法不需要引入直接使用。

2024-10-08 19:14:45 629

原创 创建Express后端项目

在package.json里加入:“dev:live”: “nodemon ./src/app.ts”2.安装跨域和表单中间件。3.编写index.js。2.安装修改自动更新。

2024-09-26 11:54:47 355

原创 CSS 中的 :root

root是一个伪类,表示文档根元素,所有主流浏览器均支持 :root 选择器,除了 IE8 及更早的版本。在:root中声明相当于全局属性,只要当前页面引用了:root segment所在文件,都可以使用var()来引用。var()函数可以代替元素中任何属性中的值的任何部分。var()函数不能作为属性名、选择器或者其他除了属性值之外的值。(这样做通常会产生无效的语法或者一个没有关联到变量的值。

2024-09-23 19:55:54 1478

原创 .env文件详解(vite项目全局配置文件)

env文件是一个用于存储环境变量的文件。在开发和部署应用程序时,经常需要在不同的环境中配置不同的变量,例如 API 地址、数据库连接信息、密钥等。在许多应用程序中,.env 文件通常包含一个或多个键值对,用于存储环境变量。Vite 中的 .env 文件还可以用于配置构建时的变量需要注意的是,Vite 中的环境变量必须以 VITE_ 前缀开头才能被识别。例如,如果您在 .env 文件中定义了一个名为 API_URL 的变量,它将不会被 Vite 识别。您应该将其命名为 VITE_API_URL。

2024-09-19 13:55:21 1345

原创 芋道快速开发平台的使用心得

项目的管理后台有 4 个版本:yudao-ui-admin-vue3 (opens new window):基于 Vue3 + element-plusyudao-ui-admin-vben (opens new window):基于 Vue3 + vben(ant-design-vue)yudao-ui-admin-vue2 (opens new window):基于 Vue2 + element-ui。

2024-09-10 10:27:03 1114

原创 JavaScript中的this

3.apply/call,改变this指向。2.预编译函数this,指向window。4.构造函数的this,指向实例对象。1.全局this,指向window。

2024-08-19 17:41:23 155

原创 HTML浏览器缓存(Browser Cache)

介绍:浏览器缓存是Web缓存中最直接、最常见的一种形式。当浏览器首次请求某个资源时,如果服务器响应中包含了缓存控制指令(如Cache-Control、Expires等),浏览器就会将这些资源存储在本地缓存中。后续请求相同资源时,如果缓存未过期,浏览器将直接从缓存中加载资源,而无需再次向服务器发起请求。浏览器缓存分为两种:强制缓存和协商缓存。

2024-08-14 15:06:27 948

原创 JavaScript中的Truthy & Falsy值以及等号判断

obj.b==null相当于obj.b === null || obj.b ===undefined的简写。

2024-08-10 12:06:06 200

原创 JavaScript变量的类型转换

类型转换分为两种:显示类型转换、隐式类型转换。

2024-07-30 20:32:59 519

原创 JavaScript之typeof运算符与instanceof运算符

代码解释:这里的空数组[]、空对象{} ,为啥他们在使用 typeof 时,返回值也是 object呢?因为这里的 返回结果object指的是引用数据类型。空数组、空对象都是引用数据类型 Object。备注 1:为啥 typeof null的返回值也是 object 呢?因为 null 代表的是空对象。备注 2:typeof NaN的返回值是 number,上一篇文章中讲过,NaN 是一个特殊的数字。typeof()表示“获取变量的数据类型”,返回的是类型值,该值是字符串类型。

2024-07-30 19:53:35 297

正则表达式30分钟入门教程

30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。

2008-12-09

程序员每天该做的事

列举了程序员每天该做的事,大家互相共勉

2007-07-18

空空如也

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

TA关注的人

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