- 博客(203)
- 资源 (1)
- 收藏
- 关注
原创 用通义灵码解决了用npm link安装的模块在vscode中不能被识别到的问题
在开发一个typescript库时,为了测试效果,用npm link将其安装到了一个本地项目中,结果在vscode中提示找不到这个模块。根据通义灵码提供的建议解决了这个问题。不得不说,AI编程助手在解决编程问题时还是很方便的。
2024-10-10 11:32:26 666
原创 现代前端架构介绍(第三部分):深入了解状态管理层及其对前端App的影响
在第二部分中,我们讨论了功能架构的三个层次。其中一个就是状态管理层,今天我们将对其进行更深入的探讨。下面是现代前端架构系列的第三部分和最后一部分介绍。
2024-08-02 10:11:52 1093
原创 现代前端架构介绍(第二部分):如何将功能架构分为三层
在这个系列的前一部分,我们揭示了现代Web应用是由不同的构建块组成的,每个构建块都承担着特定的角色,如核心、功能等。在这篇文章中,我们将深入探讨功能模块,了解其面临的挑战。废话不多说,下面是第二部分的内容。
2024-08-02 10:04:48 948
原创 现代前端架构介绍(第一部分):App是如何由不同的构建块构成的
远离JavaScript疲劳和框架大战,了解真正重要的东西几周前,我的同事们对我们的前端架构、代码结构和面临的挑战很感兴趣。在做了几次关于如何构建可扩展且健壮的前端的演讲后,我觉得把它们都总结一下并与社区分享我们的策略是一个不错的主意。废话不多说,以下是第一部分。
2024-08-02 10:01:17 524
原创 解决js对象解构赋值多行格式被prettier格式化为一行的问题
目前没有特别好的解决方法,但是有一个hack方法,就是在第一个解构参数后面加个空注释,骗过prettier。欢迎关注公众号:清晰编程,获取更多精彩内容。
2024-07-04 11:41:59 270
原创 从《深入设计模式》一书中学到的编程智慧
什么是优秀的软件设计? 如何对其进行评估? 你需要遵循哪些实践方式才能实现这样的方式? 如何让你的架构灵活、 稳定且易于理解? 我们看《深入设计模式》一书是怎样回答的。
2024-06-24 06:19:14 671
原创 从VS Code源码看清晰代码之美
VS Code的产品做的很优秀,其源码也质量颇高,清晰、整洁、富有美感。下面是src\vs\workbench\common\notifications.ts文件中的两段代码,大家感受一下:
2024-06-08 09:39:03 422
原创 在 TypeScript 中使用字典
字典是日常开发中使用频率很高的一种数据结构,在进行名值转换的时候很方便。比如一个任务的执行状态,有“已执行”和“未执行”两种状态,在数据库里存的可能是1和0,在界面上显示的时候就需要转化成其代表的含义。这样能解决报错的问题,但不是最佳解决方案,类型断言应该在没有其他更好的解决办法的情况下使用,这里显然不是。这样TypeScript就能正确识别key的类型了。然后我们可以定义一个函数来从字典中获取状态名。欢迎关注公众号:清晰编程,获取更多精彩内容。原因是变量key和字典索引的类型不匹配。
2024-06-08 09:31:47 626
原创 修复LogicFlow拖拽创建节点时,报 Cannot read properties of undefined (reading ‘model‘) 错误的问题
查了一下,是因为拖拽的dom元素上加了 draggable="true" 属性造成的,把这个属性去掉后就不报错了。
2024-06-05 16:19:24 314 2
原创 解决vuedraggable报Cannot set properties of null (setting ‘__draggable_context‘)错误的问题
在item插槽中访问一下element变量的属性就可以了。
2024-06-04 14:36:51 300
原创 修复vue3项目中,使用 antv x6 dnd拖拽插件在将节点拖动到画布上是报elem.getBoundingClientRect is not a function错误的问题
在初始化dnd插件的时候,将dndContainer属性去掉就可以了。估计是我dndContainer取值不对造成的。欢迎关注公众号:清晰编程,获取更多精彩内容。
2024-05-13 16:48:00 761
原创 如何有效地提升开发团队的技能
软件项目的成败取决于背后团队的质量。优秀的开发人员很难找到。那么,你如何让初级开发人员提升技能呢?仅仅教授如何使用框架或技术栈是不够的。好的开发人员可以遵循一种模式。优秀的开发人员知道为什么需要建立这些模式,以及如何随着项目的增长来改进项目。许多开发者都可以从辅导中获益。是的,刚从大学或短期培训项目毕业的开发者可能需要帮助来适应实际工作中的要求,但任何加入项目但工作经验不足几年的开发者都应该考虑给予额外的支持。最适合接受辅导的开发者是那些经常需要帮助但又渴望学习的人。
2024-05-13 14:10:26 1117
原创 修复vue quasar项目引入@antv/x6-plugin-dnd 后,报 Cannot read property ‘ToolItem‘ of undefined 错误的问题
/ 报Cannot read property 'ToolItem' of undefined错误的问题。如果是quasar项目,在 quasar.config.js 文件中,加如下配置。// 用于解决引入@antv/x6-plugin-dnd后,如果是普通vue项目,在vite.config.js中加如下配置。欢迎关注公众号:清晰编程,获取更多精彩内容。
2024-05-13 13:58:34 353
原创 修复 antv x6 渲染时报“Uncaught DOMException: Failed to execute ‘inverse‘ on ‘SVGMatrix‘: The matrix”错误的问题
欢迎关注公众号:清晰编程,获取更多精彩内容。在弹窗打开后,延迟渲染。
2024-05-13 10:21:31 449
原创 没想到在vscode里启用vue项目调试这么简单
在 .vscode/lanch.json 中建个Chrome: Lanch配置。欢迎关注公众号:清晰编程,获取更多精彩内容。用 npm run dev 把项目启动起来。然后把url改成项目运行地址。再按F5启动调试就可以。
2024-04-29 16:56:43 294
原创 修复ubuntu22.10更新或安装软件失败,报404错误的问题
不再为该版本提供包。请按照Ubuntu的升级文档升级到最新版本。用 apt install 命令安装软件也不行,报错类似。Ubuntu 22.10已经不再得到支持了,并且。欢迎关注公众号:清晰编程,获取更多精彩内容。apt update 就能正常更新了。
2024-04-27 07:29:25 496
原创 为什么函数式编程应该成为软件开发的未来
它很难学,但是你的代码会产生更少的意外。你可能认为软件产品生命周期中最长最昂贵的阶段是系统的初始开发阶段,因为所有那些伟大的功能都是在最初的想象中创建的。事实上,最困难的部分是之后的维护阶段。这是程序员为他们在开发过程中走捷径付出代价的时候。那么他们为什么要走捷径呢?也许他们没有意识到他们在走捷径,只有当他们的代码被部署并被大量用户使用时,其隐藏的缺陷才会暴露出来,也许开发人员很着急,上市时间的压力几乎可以保证他们的软件会包含更多的错误。大多数公司在维护代码方面的困难导致了第二个问题:脆弱性。
2024-04-08 06:08:06 997
原创 有原则的程序员如何超越竞争对手(附演讲视频》
接受干净的编码实践,建立可维护的代码结构,并有效地管理自己,对于成为当今专业行业中具有竞争力和受欢迎的程序员至关重要。在本指南中,我们将探讨每个熟练的程序员都应该精通的基本编码主题
2024-04-08 05:58:44 412 1
原创 如何应用函数式编程实现领域驱动设计
通常,面向对象编程语言是实现DDD的首选,而FP被认为擅长数据科学管道。事实上,DDD只是一个你应该专注于领域的想法,它不依附于任何特定的编程范式。你可以利用FP的特性,如可组合的、单子、应用程序和模式匹配,在“组件”架构级别实现DDD。欢迎关注公众号:文本魔术,了解更多。
2024-02-23 05:15:00 942
原创 函数式编程和领域驱动设计——天作之合!
这篇演讲展示了如何优雅而有效地使用函数式语言(例如ReasonML)以及函数式使用的经典语言(例如TypeScript)来实现领域驱动设计的许多概念。看看如何将这些技术集成到经典语言和架构中,为实际应用这些技术提供了机会。这些概念包括:* 六边形架构 * 描述不变量 * 无状态服务。DDD中的许多概念都可以很容易地用函数式编程实现。欢迎关注公众号:文本魔术,了解更多。
2024-02-23 05:00:00 593
原创 TypeScript 中的 unknown 类型的用途
TypeScript是一种发展非常快的语言,有时很难跟上它的步伐,有太多的特性不断发布, 我们可能会错过一些非常重要的珍宝。我认为unknown类型就是其中之一。
2024-02-22 05:15:00 1260
原创 TypeScript 和集合论
集合理论为 TypeScript 中类型的推理提供了一种思维模型,通过集合理论的视角,我们可以将类型看作一组可能的值,也就是说,类型的每个值都可以被看作是集合中的元素,这使得类型可以与集合相比较,集合的元素根据集合的定义属于该集合。Upcasting 将子类型转换为超类型,也就是将合适的子集转换为超集,TypeScript 允许这种转换,因为它是类型安全的:如果一个集合是另一个集合的合适子集,那么小集合中的任何元素都是大集合中的成员。如果一个类型是一个集合,那么条件类型中的条件就等于一个子集检查。
2024-02-22 05:00:00 1336
原创 用 TypeScript 做领域建模
静态类型的函数式编程语言鼓励一种非常不同的类型思考方式。类型系统是你的朋友,而不是一个麻烦,可以以许多方式使用,这些方式可能对OO程序员来说并不熟悉。类型可以用细粒度的、自文档化的方式来表示领域。在许多情况下,类型甚至可以用来编码业务规则,这样你就不会创建错误的代码。然后,你可以使用静态类型检查几乎作为即时单元测试 - 确保你的代码在编译时是正确的。在这篇演讲中,Scott将通过一些简单的现实世界示例,探讨一些可以将类型作为领域驱动设计过程的一部分的方法。没有术语,没有数学,也没有先前的FP经验。
2024-02-21 05:15:00 741
原创 TypeScript 中实用的 SOLID 原则(五):依赖反转原则
我们继续我们的旅程,介绍最后一个 SOLID 原则:依赖反转原则。学习一门新的编程语言通常是一个简单的过程,我经常听到:“第一门编程语言你需要一年的时间来学习,第二门语言需要一个月的时间,第三门语言需要一周的时间,然后接下来的每一门语言都需要一天的时间。这么说有点夸张,但是在某些情况下也并非完全不符合事实,例如,跳转到与之前的语言相对相似的语言,比如Java和C#,可以是一个简单的过程。
2024-02-21 05:00:00 1931
原创 TypeScript 中实用的 SOLID 原则(四):接口隔离原则
继续我们的 SOLID 原则之旅,讨论对代码设计有深远影响的接口隔离原则。当初学者开始他们的编程旅程时,最初的重点通常是算法和适应一种新的思维方式。一段时间后,他们深入研究面向对象编程(OOP)。如果这个转变被延迟,那么从函数式编程思维模式的转变可能会有挑战性,然而,最终,他们会接受对象的使用,并在必要时将它们合并到代码中,有时甚至在不需要它们的地方。当他们学习抽象并努力使代码更可重用时,他们可能会过度概括,导致抽象应用到所有地方,这可能会阻碍未来的开发。
2024-02-20 05:15:00 1303
原创 TypeScript 中实用的 SOLID 原则(三):Liskov 替换原则
继续我们的 SOLID 之旅,本篇来介绍定义最复杂的 SOLID 原则——Liskov 替换原则。我并不是一个阅读爱好者。通常,当我阅读时,我发现自己在过去的几分钟里失去了文本的主题。我经常在整个章节结束前都不知道它到底讲了什么。当我试图专注于内容时,这可能会令人沮丧,但我不断意识到我需要回头。这就是当我转向各种类型的媒体来了解一个话题时发生的情况。我第一次遇到这个阅读问题是在SOLID原则,特别是Liskov替换原则,它的定义对我来说太复杂了,特别是它的正式格式。
2024-02-20 05:00:00 1943
原创 TypeScript 中实用的 SOLID(二):开放/封闭原则
继续我们的旅程,介绍一个加强应用程序的灵活性的原则:开放/封闭原则。许多不同的方法和原则可以实现代码的长期改进,其中一些在软件开发社区中广为人知,而另一些则仍然有些不为人知。在我看来,这与开放/封闭原则(The Open/Closed Principle)的情况一样,由SOLID中的字母O代表。根据我的经验,只有那些真正对SOLID原则感兴趣的人才会理解这个原则的含义。在某些情况下,我们可能在没有意识到的情况下就应用了这个原则,比如在使用策略模式时。然而,策略模式只是开放/封闭原则的一种应用。
2024-02-19 05:15:00 1114
原创 TypeScript 中实用的 SOLID 原则(一):单一责任原则
让我们通过介绍最著名的单一职责原则开始软件开发中的基本原则之旅。在我的职业生涯中,有一段时间我是一个“代码猴子”,不仅仅是在开始的时候,甚至在完成我的学业之后,我也没有成为一名软件工程师。有一年夏天,我想反思一下我不断得到的反馈。“你知道,你的代码可以工作。你写得超级快。但是,你知道,没有人能理解里面发生了什么。你怎么能期望我扩展它?所以,我花了整个夏天阅读关于软件制作的书籍。是的,制作。我花了一段时间才有了突破,现在我有了。
2024-02-19 05:00:00 1000
原创 VSCode1.86版本新增及改进功能介绍(附:发布会视频)
主要亮点包括:每个窗口的缩放级别 - 独立调整每个窗口的缩放级别。嘿代码语音命令 - 开始一个聊天会话与语音命令。多文件差异编辑器 - 在差异编辑器中快速查看多个文件的差异。触发断点 - 使用断点依赖进行高效调试。扩展了粘性滚动的支持 - 树视图和笔记本中的粘性滚动。
2024-02-18 05:15:00 1268
原创 TypeScript 类型系统极限探索
TypeScript的类型系统是图灵完备的:这意味着它具有条件分支(条件类型)并可以使用任意大量的内存。因此,您可以将类型系统作为其自己的编程语言来使用,包括变量、函数和递归。开发人员已经在类型系统中扩展了类型操作的边界,以编写一些非常令人难以置信的东西!本文收集了 TypeScript 开发人员对类型系统能够实现的功能的探索成果。它们从二进制算术和基本虚拟机到迷宫解算器和完整的编程语言。
2024-02-18 05:00:00 1655
原创 TypeScript 为什么不遵循严格的语义版本控制
JavaScript/TypeScript生态系统中的大多数项目都会发布新版本,版本号遵循语义版本控制(Semver)。Semver 是一个规范,描述了如何在每次新版本发布时可预测地增加包的版本号。TypeScript 因其版本没有严格遵循 semver 而闻名。本文将深入探讨
2024-02-17 05:15:00 1579
原创 TypeScript编译器源码中的类型大全
最近在看 TypeScript 编译器源码时,在 src\compiler\types.ts 文件中看到了 TypeFlags 枚举,该枚举列出了 TypeScript 所有内置类型,可以算是内置类型大全了,感觉对熟悉TypeScript类型系统很有参考意义,感兴趣的朋友们可以了解一下。欢迎关注公众号:文本魔术,了解更多。
2024-02-17 05:00:00 170
原创 typescript + vue.js cheatsheet
提升你的Vue技能,包括关键的TypeScript概念,比如组件以及更多。值得保存备用。
2024-02-16 05:15:00 342
原创 在TypeScript中使用Rests和元组缩小函数参数类型
TypeScript提供了多种方法来描述可以以多种方式调用的函数的类型。但是最常见的两种策略——函数重载和泛型函数——对于函数的内部实现如何理解其参数的类型并没有多大帮助。本文将介绍三种技术,用于描述根据前一个参数变化的参数类型。前两种技术允许使用标准 JavaScript 语法,但在描述函数内部的类型时不够精确。第三种技术需要使用...数组展开和[...]元组类型,以一种时髦的新方式在内部获得正确的类型。fruit: either"apple"or:…在这个函数中,第二个参数的类型与第一个参数不同。
2024-02-16 05:00:00 1816
原创 TypeScript中的‘using‘关键字的用法
TypeScript 5.2 引入了一个新的关键字 ——using—— 你可以用它来处理任何带有函数的代码,在当它离开作用域时,作一些自动操作。这是基于TC39的提案,最近在JavaScript的进展中达到了阶段3(共4个阶段),这意味着它已经准备好由早期采用者进行测试。using对于管理文件句柄、数据库连接等资源非常有用。
2024-02-15 05:15:00 925
原创 如何在 TypeScript 中获取值为指定类型的对象的键
TypeScript 中一个常见的问题是,当你想获取一个对象的键值时,该对象的值是给定的类型,例如,假设你有一个这样的对象:
2024-02-15 05:00:00 1916
原创 如何在TypeScript中正确定义Window类型
在几乎所有的前端应用中,你都可能遇到过这个错误:类型'Window & typeof globalThis'上不存在属性'X'。在这篇文章中,我们将介绍几个不同的解决方案来解决这个问题。
2024-02-14 05:15:00 4573
原创 TypeScript类型系统行为
什么是结构类型?TypeScript使用结构类型。这个系统不同于你可能使用过的其他一些流行语言(如Java、c#等)所使用的类型系统。结构类型背后的思想是,如果两个类型的成员是兼容的,那么它们就是兼容的。
2024-02-14 05:00:00 1903
原创 《EffectiveTypeScript》作者在Etsy大会上的演讲总结:几幅图带你理解TypeScript
弗雷德·布鲁克斯:“给我看你的流程图,隐藏你的表格,我会继续感到困惑。给我看你们的表格,我通常就不需要你们的流程图了,它们会很明显。有时候当我在写Javascript的时候,我想举起我的手说“这是胡扯!可以看到,TypeScript的类型系统已经超出 java 的 oop 领域了!“TypeScript 是 JavaScript 的类型化超集”“TypeScript 是 JavaScript 的超集”糟糕的类型会导致对抗 tsc(你会输的!2. 不要对 抗类型检查器(你会输的)好的类型引导正确的代码。
2024-02-13 05:15:00 369
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人