策略模式实战:优雅处理AI对话流式消息
前言 最近开发AI对话功能时,遇到了对话显示的复杂需求。该场景需要处理AI返回的流式数据,涉及多种判断逻辑:数据是否属于新增对话、是否为增量更新、是否涉及工具调用等。若仅使用if/else模式,代码会迅速臃肿且逻辑难以维护。为此,我通过设计模式重构了代码结构,最终采用策略模式成功解耦了各类判断逻辑。
前言 最近开发AI对话功能时,遇到了对话显示的复杂需求。该场景需要处理AI返回的流式数据,涉及多种判断逻辑:数据是否属于新增对话、是否为增量更新、是否涉及工具调用等。若仅使用if/else模式,代码会迅速臃肿且逻辑难以维护。为此,我通过设计模式重构了代码结构,最终采用策略模式成功解耦了各类判断逻辑。
什么是包含块? 包含块(containing block),顾名思义,就是一个包含其他元素的“块”。但它可不只是一个简单的容器哦!它不仅影响子元素的位置,还会影响到**宽度、长度、内外边距(padding、margin)、甚至定位(position)**等各种CSS属性的计算。 例如,像下图一样,很
你是否了解 CSS 的属性计算过程呢? 有的同学可能会讲,CSS属性我倒是知道,例如: p{ color : red; } 上面的 CSS 代码中,p 是元素选择器,color 就是其中的一个 CSS 属性。 但是要说 CSS 属性的计算过程,还真的不是很清楚。 没关系,通过此篇文章,能够让你
摘要 一直以来家里的旧电脑闲置着,偶尔也会搞一下 Linux 系统。但是由于知识匮乏每次重新安装 Linux 系统很麻烦,就思考为啥不能像服务器运营商一样,每次重新安装系统就重置一下就好了。找了很久发现了 Proxmox 这个基于 debian 制作的虚拟机系统。如何安装查看我以往的文章,或许可以给
浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? 有了进程后,就可以运行程序的代码了。 运行代码的「人」称之为「线程」。 一个进程至少有一个线程,所以在进程开启后会
摘要 本文总结几种常见的 react 组件通讯方式,帮助新手玩家快速完成开发任务。 父子组件通信 父组件传递数据给子组件: // ParentComponent.jsx import React from 'react'; import ChildComponent from './ChildCom
摘要 本人是一个 React 新手,目前工作中需要用到 React 的相关知识,所以初步做了了解。这里主要是分享平常使用的一些案例。本章节主要是 React 核心函数使用内容。 JSX 语法注意事项 基本使用 const element = <h1>Hello, world!</h1>; 注意事项
在日常的前端开发中,经常会遇到文本处理,日期处理,文本转换等需求。通常是将它写到一个utils 文件中。问题来了,每个项目都要处理,那么文件就要重复的复制,我是个懒人。想着用rollup将它打包成一个 npm 插件,然后直接安装,之后局部引入来。这样就方便了,同时也只需要我需要的插件。这样一来随着工
摘要 在日常的前端开发中,框架总是一波接着一波的出现。为了不落后在这个快节奏的更新中,学习框架要抓住重点。 这个框架是干什么的 uniapp是 dcloud 出品的一个跨越多端的前端框架,基于vue开发。使得用户可以编写vue一套代码部署在微信小程序、支付宝小程序、钉钉、app 和网页端。怎么听起来
一行代码实现复杂设计和移除图片背景的方法 mix-blend-mode: multiply; 17 行代码实现骨架屏 *[loading='true'] > div:not([loading='true']) { background-image: linear-gradient(90deg,