- 博客(50)
- 收藏
- 关注
原创 09 - 鉴权与权限及状态码
会把「不存在的 id」误报成 403,还会泄露「这条 id 是否存在」的信息。单条资源接口(GET/PUT/DELETE。,不写死在代码里,不提交 Git。放 password。
2026-06-26 21:21:31
18
原创 拓展-01-Express 类型扩展笔记
故意留了一个「可扩展的口子」。在 里大致是这样:关键关系:所以:不是直接改 的定义,而是扩展全局的 。扩展成功后,所有 的地方都会自动带上你的字段。TypeScript 允许同名 自动合并: + 也支持合并:3. 为什么需要 你的增强写在自己的文件里,不是在 包内部。文件有两种身份: 命名空间定义在全局里。你的 如果是模块,里面的 默认只是模块局部的,合并不了全局那个。下面两种写法二选一,不要两种都写。模块写法(推荐) — 文件里会有 /(例如配合 )时使用:含义:「虽然这个文
2026-06-26 16:54:40
65
原创 07 - Prisma 入门配置指南
本文档记录 Node.js 项目中安装、初始化、首次迁移 Prisma,以及生成 Client 与配置数据库连接的完整步骤。
2026-06-23 17:44:34
253
原创 06 - Prisma Schema
是 Prisma 自己的 DSL(领域语言)。它描述「数据库里有哪些表、字段、关系」,Prisma 会据此:生成/迁移真实数据库表(migration SQL)生成 TypeScript 客户端类型和查询 API。
2026-06-23 10:54:16
252
原创 05- SQL 增删改查与核心语法讲解
北京 11 人、上海 2 人、广州 1 人,便于演示。后面写关联条件(通常是外键 = 主键);按某一列(或多列)分组,再对每组做。对一列或多列做统计,通常配合。或单独用在整表/筛选结果上。只计该列非 NULL 的行。当数据分布在多张表时,用。按关联键把行拼在一起。
2026-06-22 17:40:32
193
原创 Node.js + Express 入门实战笔记-03-CORS
浏览器会发请求,但若响应里没有合适的 CORS 头,浏览器会拦截 JS 读取响应,控制台才报 CORS 错。允许跨域请求携带 Cookie、 TLS 客户端证书(很少见)、HTTP 基本认证(浏览器弹窗那种,很少见)等凭证。预检通过后,浏览器才发真正的 POST(带 Authorization)是服务器通过响应头告诉浏览器「这个跨域请求我允许」的机制。所以 React(10086)请求 API(8080)属于。预检时声明客户端(浏览器)可以带哪些非简单请求头。浏览器缓存预检结果,减少重复 OPTIONS。
2026-06-18 15:17:38
274
原创 Node.js + Express 入门实战笔记-01-基础
只做一件事:把请求 Body 里的 JSON 字符串解析成 JavaScript 对象,挂到。与 query string 相同,只是位置不同(放在 body 里))就可以导入同一个 Express 实例,并继续挂载业务路由。),区别在于参数所在位置:URL 查询字符串 vs 请求体。Query String(GET):参数在 URL 中。HTTP 请求报文发出(Body 此时为原始字符串)Form Body(POST):参数在请求体中。调试接口时,经常需要给请求添加 Body。
2026-06-16 18:32:17
312
原创 Taro-05-分包策略
antd、echarts、富文本编辑器等重库不要在入口文件、app.ts 或公共 layout 里引入。这是微信小程序特有的「物理分包」,和 H5 的 code splitting 是两套机制。没有 sideEffects 标记,打包器可能不敢 tree-shake。顶级前端不会一上来就改配置,而是先建立一套可复用的思维框架。适合:编辑器、地图、PDF 预览、复杂图表等「低频重功能」。不是把包拆小,而是把「用户现在不需要的代码」推迟加载。分包是「推迟加载」;越小越好,通常 < 100KB。
2026-06-13 22:24:31
177
原创 Taro-04-网络请求
boolean;params?// 定义一个新类型 HttpExtraConfig,它等于 RequestConfig 去掉 url、method、data 这三个属性之后剩下的部分。// TypeScript 内置工具类型,含义是:// Omit<某个类型, 要排除的键>// 第一个参数 T:源类型// 第二个参数 K:要从 T 里排除的属性名。
2026-06-13 19:47:32
271
原创 Taro-02-页面路由
不会把 Tab 页「压栈」,而是切换 Tab + 清理非 Tab 页。栈里最多只会剩 TabBar 页面,只会出现。是最彻底的重置,不管目标是 Tab 还是普通页,结果都是单页栈。2. 页面加载完成时(useLoad)——更常用于副作用。3. 页面再次显示时(useDidShow)路由配置在 app.config.ts。
2026-06-13 19:46:58
199
原创 Taro-01-基础
(当前规则可能随平台版本调整,但核心思想没变:主包要尽量小。Taro 是京东开源的跨端开发框架。直接写px,taro自动转换单位。是Taro开发必学技能。
2026-06-13 19:46:57
232
原创 canvas踩坑日记01
坑1:坐标系混用设置了后,还用(物理像素)做布局,会偏移/错位。应改用或。坑2:clearRect 清不干净受 transform 影响,clearRect参数也应使用当前坐标系(CSS 像素)。坑3:重复缩放用scale且重复调用会叠加;更安全。
2026-06-02 17:13:51
193
原创 图片预解码缓存
预解码 = 在图片真正要出现在视口里之前,提前完成 decode,把「压缩数据 → 位图」这一步做完。典型场景:列表里下一屏的头像、封面,轮播下一张,路由切换前,提前加载详情页大图。目标:显示时只做合成,不再临时 decode,首帧更稳。这里的「缓存」通常指:把已经 decode 好的位图(或可直接绘制的对象)留在内存里,下次再用同一张图时,跳过 decode。网络层:HTTP 缓存,同 URL 不必再下解码层:同 URL 的位图可能已在内存里,可见<img>再绑这个 URL 时更快层级。
2026-06-01 16:43:21
396
原创 preload,prefetch,preconnect
而 preload:在 HTML 阶段就开始下载,性能会提升很多。理解:HTTP 缓存 和 ES Module 模块缓存。所以后面真正请求资源时:直接下载,省掉大量等待时间。如果滥用:会抢占带宽。导致:真正关键资源反而变慢。若过早 prefetch 多个页面,会多占带宽。点击后才下载 chunk,常有 loading。浏览器:只有执行到 JS,才知道需要。默认浏览器:并不是立刻发现所有资源。发现 CSS / JS / 图片。字体特别适合 preload。而不是 preload。它们优化的是不同阶段。
2026-05-29 16:30:47
237
原创 由浅入深递归练习
正/反,数据从上(前)往下(后)推,或者从下(后)往上(前)推。👉 “提前 return” 是递归性能关键点。先写一个节点的逻辑,确保返回的数据符合预期。统计 name 长度 > 3 的节点数。后面的节点输出依赖前面的节点中的数据。再考虑其他节点,根据返回值做处理。如果 target = D。输出所有节点的 name。找到所有“上游依赖节点”
2026-05-25 16:35:48
212
原创 由浅入深了解css3动画
前端动画,是前端工程师“拉开差距”非常明显的一项能力。很多人会:但真正高级前端,会:你现在的目标,不应该是“记 API”。而是:建立一整套“动画思维体系”。你先记住一句:动画,本质是“让某个值随时间变化”。你必须理解浏览器渲染流程。最贵例如:宽高(width,height)位置信息(top,left)自身布局(margin,padding,font-size)等发生改变时,会影响外部布局或者内部布局,会触发:重新计算布局中等。例如:背景(background)、阴影(box-shadow)、颜色(color
2026-05-25 14:45:55
367
原创 React Flow + Zustand 搭建工作流编排工作台
用“拖拽 + 连线”的方式,定义一套执行流程一个 AI 推理流程的可视化编辑器拖节点(检测 / 分类 / 逻辑)连线(定义执行顺序)配置节点参数最终导出 JSON(给后端执行)index?: number;position?// 补充用于布局计算的位置信息// 优先使用 React Flow 传入的真实坐标,降级使用 data 中的坐标.x??250);.y??50);x: currentX, // 去掉随机偏移,让其完全水平居中对齐。
2026-04-15 16:12:50
337
原创 全局状态Zustand与事件总线Event Bus
浏览器原生自带很多事件,比如click(点击)、scroll(滚动)、load(加载)。但在复杂的业务中,这些不够用,我们需要定义自己的业务事件,比如这里的。就是用来创建这种自定义事件对象的构造函数。第一个参数这是事件的名字(类型)。就像给快递贴个标签,告诉接收方这是什么类型的包裹。第二个参数这是事件的配置项。detail是的核心属性,专门用来携带数据。在这里,我们将放入detail中。这意味着,当其他组件接收到这个事件时,可以通过拿到这两个变量。
2026-04-14 11:30:14
392
原创 文件切片上传
大文件上传系统,通过 Web Worker 计算文件 hash 实现秒传,通过服务端记录分片状态实现断点续传,并通过并发队列优化上传效率。同时设计 UploadManager 单例,使上传任务脱离页面生命周期,实现跨路由持续上传。
2026-04-03 17:32:08
322
原创 前端性能优化之埋点监控实战
检查本地有没有离线数据,如果有,立刻尝试补发。监听js、promise报错,有网上报日志,反之离线缓存。一个成熟埋点系统 = 5部分。👉 不要乱埋点,必须结构化。埋点 ≠ 统计用户行为。
2026-04-01 17:10:51
51
原创 form组件的一个高级用法
实际业务中遇到的,可编辑表格,多行同时为编辑态的时候,每一行Form.Item的组件必须有独立的 Form 字段这是,属于 Form 的一个很重要但很多人没有完全理解的高级用法。本质上是在定义。
2026-03-11 09:48:10
42
原创 path.join() 与 path.resolve()
只是拼接路径片段,结果可能是相对路径也可能是绝对路径,不做解析为绝对路径的操作。:给定的路径参数从右到左处理,直到构造出一个绝对路径,然而,最终的行为效果,等价于你在终端中从左到右依次执行cd命令。用法输入'a', 'b''a/b'输入同左(因为__dirname是绝对路径)是否依赖?❌ 否✅ 是返回相对路径?✅ 可能❌ 永远不会。
2026-02-02 17:29:56
414
原创 requestAnimationFrame
是现代 Web 动画的黄金标准✅ 流畅:与屏幕刷新同步✅ 高效:后台自动暂停✅ 精确:提供高精度时间戳✅ 节能:减少不必要的渲染-------------------------------------------------------------分割线-----------------------------------------------------------transform(如translateX。
2026-01-04 11:01:06
1141
原创 JS中计算高度的几种方式
属性 / 方法包含 padding包含 border包含 margin包含滚动条受内容溢出影响返回类型是否受 transform/zoom 影响✅❌❌❌❌整数❌✅✅❌✅❌(若固定高)整数❌✅❌❌❌✅整数❌✅✅❌✅❌浮点数✅❌❌❌❌❌字符串❌。
2025-12-16 14:42:00
379
原创 canvas基础
canvas>是 HTML5 引入的一个画布元素,它本身就像一张白纸,没有内容,但你可以通过JavaScript在上面绘制图形、图像、动画,甚至是游戏和数据可视化。✅<canvas>默认是透明的。如果不设置width和height属性,默认是300x150px。CSS 设置的宽高会拉伸画布(可能导致模糊),所以建议用 HTML 属性设置尺寸。
2025-10-28 15:16:09
412
原创 blob二进制数据与reader阅读器
Blob(Binary Large Object)是 JavaScript 中用来表示不可变的、原始的二进制数据的对象。图片(png, jpg)视频(mp4)音频(mp3)PDF 文件压缩包(zip)场景技术点图片上传预览img.src文件下载(导出)Blob读取用户本地文件内容大文件分片上传使用切片视频/音频处理。
2025-10-24 14:13:03
802
原创 常用的设计模式
高阶组件,用于包裹任何需要权限的组件。如果用户无权限,则显示“无访问权限”提示。对象之间一对多的依赖关系。当一个对象状态改变时,所有依赖它的对象都会收到通知。定义一个创建对象的接口,但由子类决定实例化哪个类。用于统一创建复杂对象。定义一系列算法,把它们封装起来,并且使它们可以互相替换。动态地给一个对象添加一些额外的职责,而不修改其原始结构。确保一个类只有一个实例,并提供一个全局访问点。为对象提供一个代理,以控制对原对象的访问。
2025-09-24 21:03:00
411
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅