<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[still-soda的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/2301_79954899</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; 2301_79954899]]></copyright><item><title><![CDATA[【TypeScript全栈开发】tRPC入门学习（一）]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/149221704</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/149221704</guid><author>2301_79954899</author><pubDate>Wed, 09 Jul 2025 13:03:58 +0800</pubDate><description><![CDATA[tRPC 是一个现代 TypeScript 全栈开发工具，旨在解决 API 类型安全问题。它通过在服务端定义并导出 API 类型，让客户端可以像调用本地方法一样使用 API，实现类型安全的全栈开发。文章介绍了 tRPC 的安装配置方法，展示了如何在服务端创建路由实例、定义查询/修改端点，以及如何在客户端使用这些 API。相比 GraphQL，tRPC 充分利用 TypeScript 特性，提供了更简洁的类型安全方案，同时还支持自动批量请求等优化功能。]]></description><category></category></item><item><title><![CDATA[【TypeScript全栈开发】Prisma ORM 入门教程]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/149194981</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/149194981</guid><author>2301_79954899</author><pubDate>Tue, 08 Jul 2025 11:56:21 +0800</pubDate><description><![CDATA[Prisma 是一个为 Node.js 和 TypeScript 设计的现代化 ORM 工具，提供直观的数据建模、自动化迁移和类型安全功能。通过 .prisma 文件定义数据模型后，Prisma 可自动生成 SQL 表结构和类型化客户端（Prisma Client）。其核心特性包括：自动化迁移（根据模型生成数据库结构）、类型安全（实时类型提示）以及关系管理（自动处理多对多关联）。安装使用只需通过 Prisma CLI 初始化项目，配置数据库连接，定义数据模型并运行迁移命令即可。此外，Prisma 还支持事务]]></description><category></category></item><item><title><![CDATA[全网最详细 & 最完善的 Promise 实现教程，带你彻底掌握 Promise]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/145858287</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/145858287</guid><author>2301_79954899</author><pubDate>Tue, 25 Feb 2025 17:39:09 +0800</pubDate><description><![CDATA[还在被网上粗制滥造的Promise实现教程误导吗？这是全网最详细最完善的Promise实现教程，带你彻底掌握Promise。]]></description><category></category></item><item><title><![CDATA[一文讲清 JavaScript 异步编程]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/145232564</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/145232564</guid><author>2301_79954899</author><pubDate>Sat, 18 Jan 2025 20:59:41 +0800</pubDate><description><![CDATA[一直以来，JavaScript以其出色的异步模型著称。特别在ES6之后，JavaScript正式变成一门完善的编程语言，Promise使其异步特性也趋近于完善，并且在ES2017中新增了基于Promise的语法糖，使得异步操作变得更加简单。可以说，如果不学习JavaScript的异步编程，就根本不算真正接触JavaScript这门语言。那么究竟什么是异步编程，接下来让我开始为你讲解。回调地狱指的是当需要按顺序执行多个异步操作时，回调函数往往会被大量嵌套，从而导致可读性大大下降的情况。]]></description><category></category></item><item><title><![CDATA[一文讲清 JavaScript 动画基础]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/144014434</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/144014434</guid><author>2301_79954899</author><pubDate>Sun, 24 Nov 2024 21:57:13 +0800</pubDate><description><![CDATA[本文介绍了前端动画的实现原理和方法，包括关键帧、插值、渲染循环等基本概念，并展示了如何使用JavaScript实现简单的插值动画和更复杂的物理动画。文章还探讨了缓动函数的作用，并提供了一个实用的在线资源，帮助开发者选择和实现各种缓动效果。]]></description><category></category></item><item><title><![CDATA[解决 Canvas 双击后拖拽失效问题]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/141932085</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/141932085</guid><author>2301_79954899</author><pubDate>Thu, 05 Sep 2024 15:25:09 +0800</pubDate><description><![CDATA[在开发一个仿 excalidraw Web 应用时，遇到了双击页面后拖拽失效的问题。主要表现在双击后拖拽功能无法使用，鼠标指针变为 copy 样式，且 mousemove 事件监听器不再触发。通过分析，发现问题并非由焦点转移引起。实际原因在于双击可能触发浏览器的默认行为，如文本选择或窗口最大化，这些行为会干扰事件的正常传播。特别是 dragstart 事件在双击后可能会被触发，导致拖拽功能异常。为了解决这个问题，通过在文档上添加 dragstart 事件监听器，并调用 event.preventDefaul]]></description><category></category></item><item><title><![CDATA[使用流式传输协议接入大模型的心得以及一些相关 bug 的解决方案]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/141335575</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/141335575</guid><author>2301_79954899</author><pubDate>Mon, 19 Aug 2024 21:45:27 +0800</pubDate><description><![CDATA[使用流式传输协议接入大模型的心得以及一些相关 bug 的解决方案]]></description><category></category></item><item><title><![CDATA[把 VSCode 中的颜色指示器改成圆角的一种办法]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/140737439</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/140737439</guid><author>2301_79954899</author><pubDate>Sat, 27 Jul 2024 16:33:16 +0800</pubDate><description><![CDATA[本文讲述了如何对 VSCode 中丑到爆的矩形颜色指示器进行样式修改。]]></description><category></category></item><item><title><![CDATA[《Vue.js设计与实现》学习笔记 | 响应系统的作用与实现]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/140577477</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/140577477</guid><author>2301_79954899</author><pubDate>Sat, 20 Jul 2024 21:11:57 +0800</pubDate><description><![CDATA[本章从 Vue.js 的响应式数据系统入手，探讨其核心机制。先是介绍了副作用函数及其原理，通过对数据的读取和赋值捕获，实现响应式。接着讲解了利用 `Proxy` 和 `WeakMap` 实现数据与副作用函数的绑定和触发。为解决副作用函数重复执行的问题，引入了依赖清理机制，并通过封装 `track` 和 `trigger` 函数优化代码。针对嵌套 `effect`，采用栈结构管理活动副作用函数，避免误收集。最后通过调度执行机制，实现了副作用函数的可调度性，从而构建了一个完善的响应式系统。]]></description><category></category></item><item><title><![CDATA[《Vue.js设计与实现》学习笔记 | Vue.js 3 的设计思路]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/140415159</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/140415159</guid><author>2301_79954899</author><pubDate>Sun, 14 Jul 2024 12:36:42 +0800</pubDate><description><![CDATA[本章主要讲解了 Vue.js 3 如何通过声明式描述 UI，使开发者可以使用模板语法和 JavaScript 对象来定义 DOM 元素、属性和事件。然后，讲解了如何使用 JavaScript 对象描述虚拟 DOM，使代码更加灵活，以及如何使用 `h` 函数简化虚拟 DOM 的创建，使手写虚拟 DOM 更加简便。最后讲解了渲染器的作用，并指出模板在编译阶段被编译为 JavaScript 代码，在运行时由渲染器渲染为真实 DOM。]]></description><category></category></item><item><title><![CDATA[《Vue.js设计与实现》学习笔记 | 框架设计的核心要素]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/140396886</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/140396886</guid><author>2301_79954899</author><pubDate>Sat, 13 Jul 2024 11:16:54 +0800</pubDate><description><![CDATA[本章主要讲了应当如何使用特定方法来在生产环境中给开发者带去优质的开发体验，如合理、友好地输出各种信息。以及如何使用 rollup.js 等打包工具缩减构建体积，删除生产环境下不必要的代码。然后分多钟情况讲解了在不同的需求下需要输出哪些不同的构建产物。最后再讲解了如何在框架中加入不错的错误处理，以及加入TS支持的需求。]]></description><category></category></item><item><title><![CDATA[《Vue.js设计与实现》学习笔记 | 权衡的艺术]]></title><link>https://blog.youkuaiyun.com/2301_79954899/article/details/140387738</link><guid>https://blog.youkuaiyun.com/2301_79954899/article/details/140387738</guid><author>2301_79954899</author><pubDate>Fri, 12 Jul 2024 20:10:03 +0800</pubDate><description><![CDATA[本章主要讲了声明式和命令式各自的特点和局限，框架开发者应当如何尽可能降低声明式带来的性能损耗，并降低开发者的心智负担，提高编写程序的可维护性。接着，讨论了虚拟DOM的性能，以及其与传统操作模式的区别的优势。最后，讨论了编译时和运行时这两种框架类型。]]></description><category></category></item></channel></rss>