
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>天渺工作室 | 天渺工作室的blog</title>
      <link>https://blog.tianmiao.site/blog</link>
      <description>blog</description>
      <language>en-us</language>
      <managingEditor>wangkai233@qq.com (天渺工作室)</managingEditor>
      <webMaster>wangkai233@qq.com (天渺工作室)</webMaster>
      <lastBuildDate>Sat, 25 Apr 2026 12:00:00 GMT</lastBuildDate>
      <atom:link href="https://blog.tianmiao.site/feed.xml" rel="self" type="application/rss+xml"/>
      
    <item>
      <guid>https://blog.tianmiao.site/blog/别再写改名脚本了，一个 Vite 插件搞定压缩、校验、自动哈希命名</guid>
      <title>别再写改名脚本了，一个 Vite 插件搞定压缩、校验、自动哈希命名vite-plugin-pack-orchestrator</title>
      <link>https://blog.tianmiao.site/blog/别再写改名脚本了，一个 Vite 插件搞定压缩、校验、自动哈希命名</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/2026/04/27/Y0brpbaN.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;别再写改名脚本了，一个 Vite 插件搞定压缩、校验、自动哈希命名vite-plugin-pack-orchestrator，市面上已经有一些 Vite 打包插件，比如 vite-plugin-zip-pack，vite-plugin-compress等，能用，但总差那么点意思 — 大多只支持 ZIP，功能也比较单一。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 25 Apr 2026 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>Vite</category><category>前端工程化</category><category>打包工具</category><category>CI/CD</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/给AI装上「丁真语录」skill，vibecoding也能加点笑料</guid>
      <title>给AI装上「丁真语录」skill，vibecoding也能加点笑料</title>
      <link>https://blog.tianmiao.site/blog/给AI装上「丁真语录」skill，vibecoding也能加点笑料</link>
      <description>&lt;img src=&quot;https://raw.giteeusercontent.com/wangkai000/dingzhen-skill/raw/master/img/ding.jpg?metadata=eyJyIjoibWFzdGVyIiwiZnAiOiJpbWcvZGluZy5qcGciLCJ1aWQiOjEzODI0MDEsInBpZCI6NDY1MjI1MDQsInN0byI6ImdpdC1zaGFyZGluZy1zdG8tNDJ0LTAwOCIsInJwIjoicmVwb3MvZTAvMTgvZTAxOGFjZjA0ODExZWI0MTI2NjI3ZWQ4NTkzNjBlNjIxYTgyNjA1ODIwYzliNWNhMDJjNGYwZjI4MDBjNDIxZC5naXQiLCJpc3AiOnRydWUsImV4cGlyZV9hdCI6MTc3NzM5MDgwMH0&amp;signature=EgpCBKhjvF02pr1_XZt2cZXsrkbqUE-HVFodv3mZPfA&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;最近看到有人搞了个蒸馏同事的skill，还有峰哥skill（这是好事啊😂），决定自己也搞个丁真的，不是什么正经功能，纯粹是给枯燥的编程生活加点笑料。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 11 Apr 2026 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>AI</category><category>Skill</category><category>VibeCoding</category><category>娱乐</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/前端复古风选型必看！像素UI 、8bitUI 、精简复古风UI</guid>
      <title>前端复古风选型必看！像素UI 、8bitUI 、精简复古风UI</title>
      <link>https://blog.tianmiao.site/blog/前端复古风选型必看！像素UI 、8bitUI 、精简复古风UI</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/2026/03/22/WlMQJA3r.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;前端复古风选型必看！像素UI 、8bitUI 、精简复古风UI。整理了几个亲测还不错的复古风格UI库😂&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 04 Apr 2026 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>React</category><category>Vue3</category><category>Next.js</category><category>UI</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Chrome浏览器自带翻译的诡异Bug：ID翻译后竟然变化了</guid>
      <title>Chrome浏览器自带翻译的诡异Bug：ID翻译后竟然变化了</title>
      <link>https://blog.tianmiao.site/blog/Chrome浏览器自带翻译的诡异Bug：ID翻译后竟然变化了</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/07/27/134efaa40d8ccfbd.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;当前负责的项目主打海外业务，总免不了和多语言打交道。但最近我在Vite+Vue3+Element Plus技术栈的项目里，遇到了一个堪称“玄学”的bug——Chrome浏览器自带翻译功能，居然能把表格里的数字ID直接改了！从印度同事到国内运...&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 22 Nov 2025 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>前端</category><category>Chrome</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Ollama本地电脑运行无限制AI模型超简单案例</guid>
      <title>Ollama本地电脑运行无限制AI模型超简单案例</title>
      <link>https://blog.tianmiao.site/blog/Ollama本地电脑运行无限制AI模型超简单案例</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/11/14/ec08efa3158886bb.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;想在本地用一款 “无拘无束” 的 AI 模型？Ollama 能帮你轻松实现，但先得说清楚：这类 “越狱模型” 虽自由，却可能藏着不少小麻烦。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 15 Nov 2025 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>AI</category><category>Ollama</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/整理些我常逛的Web3社区</guid>
      <title>整理些我常逛的Web3社区</title>
      <link>https://blog.tianmiao.site/blog/整理些我常逛的Web3社区</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/11/12/7659068cb9145e9b.jpeg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;Web3作为热门互联网技术正在快速发展（也包含大量嘎割韭菜的），涌现出了许多有价值的社区。整理了一些我常逛社区资源。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 12 Nov 2025 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>Web3</category><category>区块链</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/谷歌广告AdSense+GAM接入避坑 + 填充监听 + 问题排查</guid>
      <title>谷歌广告AdSense/GAM 接入避坑 + 填充监听 + 问题排查</title>
      <link>https://blog.tianmiao.site/blog/谷歌广告AdSense+GAM接入避坑 + 填充监听 + 问题排查</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/09/21/fb9c34dac9d7435f.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;作为长期负责海外业务的开发者，公司业务中经常会和谷歌的人员有沟通。在接入谷歌广告生态时，踩了很多坑，很多坑都是和谷歌的技术人员沟通后才发现问题的（有些最新情况和文档不一致，很坑）。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 10 Oct 2025 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>前端</category><category>谷歌广告</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/如何优雅判断 AdBlock 是否开启？</guid>
      <title>如何优雅判断 AdBlock 是否开启？前端实现方案分享</title>
      <link>https://blog.tianmiao.site/blog/如何优雅判断 AdBlock 是否开启？</link>
      <description>&lt;img src=&quot;https://s21.ax1x.com/2025/07/20/pV8e6Zn.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;因为自己主要负责面对海外的用户项目，发现以前的检测AdBlock/AdBlock Plus开启状态方法已失效了，于是专门研究了一下，并尝试了很多方法。发现npm上的插件基本都失效了，于是研究了一下屏蔽原理。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 10 Feb 2025 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>前端</category><category>广告</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Vite打包zip并改名为md5sum哈希案例</guid>
      <title>Vite打包zip并改名为md5sum哈希案例</title>
      <link>https://blog.tianmiao.site/blog/Vite打包zip并改名为md5sum哈希案例</link>
      <description>&lt;img src=&quot;https://s21.ax1x.com/2025/07/20/pV8efRU.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;在前端项目 DevOps CICD 流水线中，通过 MD5 哈希值命名打包文件的实践方案。核心流程为：使用工具将 dist 目录打包为 ZIP，通过 md5sum 计算该 ZIP 文件的 MD5 哈希值，再以哈希值重命名 ZIP 文件。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 10 Sep 2024 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>前端</category><category>CICD</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/MapLibre Native安卓集成实战：从环境配置到地图展示全指南</guid>
      <title>MapLibre Native安卓集成实战：从环境配置到地图展示全指南</title>
      <link>https://blog.tianmiao.site/blog/MapLibre Native安卓集成实战：从环境配置到地图展示全指南</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/07/21/9ccaeef64d42ccb4.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;MapLibre Native 是一个免费且开源的库，用于在各种平台上的应用程序和桌面应用程序中发布地图。由于 GPU 加速的矢量瓦片渲染，地图的快速显示成为可能。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 07 Jun 2024 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>安卓</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/JS正则导致的 test () 方法异常详解</guid>
      <title>JavaScript 正则陷阱：全局匹配 /g 导致的 test () 方法异常详解</title>
      <link>https://blog.tianmiao.site/blog/JS正则导致的 test () 方法异常详解</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/07/21/1baf2ca3c6eb9ebf.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;在 JavaScript 正则表达式使用中，一个看似简单的全局匹配标志/g，可能会在循环检测时引发令人困惑的结果。本文将通过实际案例解析这一现象的底层原因，并提供多种解决方案。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 29 Apr 2024 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>前端</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/你可能忽略的 HTML 细节：lang 属性的作用与避坑指南</guid>
      <title>你可能忽略的 HTML 细节：lang 属性的作用与避坑指南</title>
      <link>https://blog.tianmiao.site/blog/你可能忽略的 HTML 细节：lang 属性的作用与避坑指南</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/07/25/4c053261add55df2.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;在 HTML 标签中，lang属性看似简单，却隐藏着影响用户体验的关键细节。本文将深入解析lang的作用，结合真实案例说明配置不当可能引发的问题，并提供正确的使用方法。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 10 Feb 2024 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>前端</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Vue3中Fragment特性的一个bug，需要留意的注意事项</guid>
      <title>Vue3中Fragment特性的一个bug，需要留意的注意事项</title>
      <link>https://blog.tianmiao.site/blog/Vue3中Fragment特性的一个bug，需要留意的注意事项</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/09/19/d28a8280e9dbe246.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;Vue3中的Fragment特性虽然提供了更灵活的组件结构，但在某些特定场景下可能会出现意外的行为。本文详细介绍了一个需要注意的Fragment相关bug及其解决方案。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 15 May 2023 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>Vue3</category><category>Vue</category><category>Bug</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/温习：TCP IP，IP和OSI的基础层级关系图</guid>
      <title>温习网络协议基础：TCP/IP与OSI模型层级关系详解</title>
      <link>https://blog.tianmiao.site/blog/温习：TCP IP，IP和OSI的基础层级关系图</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/07/27/134efaa40d8ccfbd.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;本文详细介绍了TCP/IP与OSI网络模型的层级关系，包括各层次的对应关系、功能定位及主要协议，帮助读者建立网络协议栈的完整认知框架。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 02 Apr 2023 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>网络协议</category><category>TCP/IP</category><category>IP</category><category>OSI模型</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Android startActivityForResult()废弃了，代替方案案例</guid>
      <title>Android startActivityForResult()废弃替代方案详解及实例</title>
      <link>https://blog.tianmiao.site/blog/Android startActivityForResult()废弃了，代替方案案例</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/11/23/8fd6d3c29a59b267.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;本文详细介绍Android中startActivityForResult()方法被废弃后的替代方案——Activity Result API的使用方法，并通过完整案例展示页面间的数据传递和结果接收流程。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 05 Mar 2023 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>安卓</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Chrome 浏览器移除 Event.path 后的兼容方案</guid>
      <title>Chrome 浏览器移除 Event.path 后的兼容方案</title>
      <link>https://blog.tianmiao.site/blog/Chrome 浏览器移除 Event.path 后的兼容方案</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/10/04/686338d579e584ac.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;2023 年 2 月初，Chrome 浏览器（版本 109.0.5414.120）在一次更新中移除了点击等事件中 Event.path 数组参数。值得注意的是...&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 12 Feb 2023 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>JS</category><category>Chrome</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/基于 Vue 自定义指令实现点击事件权限控制</guid>
      <title>基于 Vue 自定义指令实现点击事件权限控制</title>
      <link>https://blog.tianmiao.site/blog/基于 Vue 自定义指令实现点击事件权限控制</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/10/05/2419c0c407fba0f2.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;在许多业务场景中，需要对按钮等元素的点击事件添加权限校验：当用户拥有权限时，正常触发点击事件；无权限时，则拦截事件或执行其他提示逻辑。若通过封装组件实现，在使用第三方 UI 库（如 Element Plus）的场景下，会导致封装成本过高。本文将介绍如何通过 Vue 自定义指令低成本实现这一需求。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 12 Feb 2023 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>前端</category><category>Vue</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Flutter 利用 MediaQuery 监听设备配置动态变化（附实战示例）</guid>
      <title>Flutter MediaQuery 详解：监听设备字体等配置动态变化</title>
      <link>https://blog.tianmiao.site/blog/Flutter 利用 MediaQuery 监听设备配置动态变化（附实战示例）</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/11/19/6187f16f39f66717.jpeg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;本文详细介绍 Flutter 中 MediaQuery 组件的使用方法，包括如何监听设备信息和配置动态变化（如系统字体大小、主题模式切换等），并通过实战示例演示如何实现响应式界面逻辑。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 27 Jan 2023 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>Flutter</category><category>Dart</category><category>MediaQuery</category><category>设备适配</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Vite 代码分割完全指南：从原理到实战配置</guid>
      <title>Vite 代码分割完全指南：从原理到实战配置</title>
      <link>https://blog.tianmiao.site/blog/Vite 代码分割完全指南：从原理到实战配置</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/07/20/966dd8452edb17b1.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;在前端工程化中，代码分割（Code Splitting）是优化应用加载性能的关键技术。对于使用 Vite 构建的项目，合理配置代码分割可以显著减少初始加载体积，提升用户体验。本文将从基础原理到实战配置，全面讲解 Vite 中的代码分割实现。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 28 Aug 2022 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>前端</category><category>Vite</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Vue3中的Composables组合式函数</guid>
      <title>Vue3中的Composables组合式函数</title>
      <link>https://blog.tianmiao.site/blog/Vue3中的Composables组合式函数</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/07/21/f8b24e04da6ebc42.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;Vue3中的Composables是类React Hooks式的组合式函数封装方法，它提供了一种更灵活的方式来组织和复用组件逻辑。本文详细介绍Composables的概念、优势以及与Vue2 mixins的对比。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 12 Jun 2022 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>Vue3</category><category>Vue</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Vue3源码中的TypeScript重载函数的作用</guid>
      <title>Vue3源码中的TypeScript重载函数的作用</title>
      <link>https://blog.tianmiao.site/blog/Vue3源码中的TypeScript重载函数的作用</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/07/21/f8b24e04da6ebc42.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;函数重载一般指重载函数。 重载函数是函数的一种特殊情况，为方便使用，C++允许在同一范围中声明几个功能类似的同名函数，但是这些同名函数的形式参数（指参数的个数、类型或者顺序）必须不同，也就是说用同一个函数完成不同的功能。这就是重载函数&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 30 May 2022 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>TS</category><category>Vue3</category><category>Vue</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/写TS效率大提升,TypeScript中常用内置工具类型Omit、Pick、Partial、Required、Readonly、Exclude 、Extract</guid>
      <title>写TS效率大提升,TypeScript中常用内置工具类型Omit、Pick、Partial、Required、Readonly、Exclude 、Extract</title>
      <link>https://blog.tianmiao.site/blog/写TS效率大提升,TypeScript中常用内置工具类型Omit、Pick、Partial、Required、Readonly、Exclude 、Extract</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/10/04/686338d579e584ac.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;TypeScript提供了多种内置工具类型，如Omit、Pick、Partial、Required、Readonly、Exclude、Extract等，这些工具类型可以显著提升开发效率，简化类型操作。本文详细介绍这些工具类型的使用方法和应用场景。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 29 May 2022 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>TS</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/TypeScript type 和 interface区别</guid>
      <title>TypeScript type 和 interface区别</title>
      <link>https://blog.tianmiao.site/blog/TypeScript type 和 interface区别</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/09/19/d28a8280e9dbe246.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;TypeScript中type和interface都是用来定义类型的方式，但它们在语法、功能和使用场景上存在一些区别。本文将详细介绍TypeScript中type和interface的区别以及各自的使用场景。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 22 May 2022 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>TS</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Vue3+ElementPlus el-date-picker 时间范围设置 固定时间段可选 配置</guid>
      <title>Vue3+ElementPlus el-date-picker 时间范围限制配置详解</title>
      <link>https://blog.tianmiao.site/blog/Vue3+ElementPlus el-date-picker 时间范围设置 固定时间段可选 配置</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/09/19/d28a8280e9dbe246.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;详细介绍 Vue3 + ElementPlus 中使用 el-date-picker 组件实现时间范围限制的配置方法，包括固定时间段可选功能的实现。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 04 May 2022 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>Vue3</category><category>ElementPlus</category><category>日期选择器</category><category>前端开发</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/JS中的JOSN.parse(JSON.stringify())深拷贝的缺点</guid>
      <title>JS中JSON.parse(JSON.stringify())深拷贝的缺点</title>
      <link>https://blog.tianmiao.site/blog/JS中的JOSN.parse(JSON.stringify())深拷贝的缺点</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/09/19/1acd6d428fb3c4ce.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;在JavaScript中实现深拷贝时，JSON.parse(JSON.stringify())方法虽然简单易用，但存在诸多局限性，包括数据类型丢失、循环引用报错等问题。本文通过具体案例详细分析其缺点，并提供更可靠的替代方案。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 22 Jan 2022 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>前端</category><category>JS</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Flutter Dart 深拷贝全方案：Map 与实体类全解析</guid>
      <title>Flutter Dart 深拷贝全方案：Map 与实体类全解析</title>
      <link>https://blog.tianmiao.site/blog/Flutter Dart 深拷贝全方案：Map 与实体类全解析</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/09/19/efc336cb93c318c5.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;在 Web 开发中，JSON.parse(JSON.stringify(obj)) 是实现深拷贝的常用方案（函数等特殊类型除外）。而在 Dart 中，深拷贝场景同样高频，尤其涉及 Map 和实体类时。Dart 没有内置通用深拷贝 API，本文结合 Dart 3.x 特性，整理一套实用方案，覆盖主流场景。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 21 Mar 2021 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>Flutter</category><category>Dart</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Flutter 监听软键盘弹出关闭：官方原生方案（替代 keyboard_visibility）</guid>
      <title>Flutter 监听软键盘弹出 / 关闭：官方原生方案（替代 keyboard_visibility）</title>
      <link>https://blog.tianmiao.site/blog/Flutter 监听软键盘弹出关闭：官方原生方案（替代 keyboard_visibility）</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/09/19/24c2de36c5e440d9.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;在 Flutter 开发中，监听软键盘的弹出与关闭是高频需求，但第三方插件 keyboard_visibility 已停止维护，存在编译报错（如 build.gradle 冲突）等问题，不推荐在新项目中使用。本文介绍 Flutter 官方提供的原生解决方案。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 06 May 2020 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>Flutter</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/Ionic3 监听软键盘的高度</guid>
      <title>Ionic3 监听软键盘的高度</title>
      <link>https://blog.tianmiao.site/blog/Ionic3 监听软键盘的高度</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/10/04/686338d579e584ac.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;在Ionic3应用开发中，监听软键盘的高度变化对于优化用户体验至关重要。本文介绍如何在Ionic3中实现软键盘高度的监听和处理，包括使用Ionic Native Keyboard插件和自定义解决方案。&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 01 Mar 2019 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>Angular2</category><category>Ionic3</category>
    </item>
  
    <item>
      <guid>https://blog.tianmiao.site/blog/MySQL Workbench 6.3CE 菜单汉化xml</guid>
      <title>MySQL Workbench 6.3CE 菜单汉化 xml</title>
      <link>https://blog.tianmiao.site/blog/MySQL Workbench 6.3CE 菜单汉化xml</link>
      <description>&lt;img src=&quot;https://s3.bmp.ovh/imgs/2025/09/19/d28a8280e9dbe246.jpg&quot; width=&quot;800&quot;&gt;&lt;p&gt;&lt;small&gt;找了很多 CSDN都要积分 直接自己搞了个 MySQL8.0亲测可以 https://pan.baidu.com/s/1Mwbye2tUj2u3RMdR_oW7rQ&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 01 Mar 2019 12:00:00 GMT</pubDate>
      <author>wangkai233@qq.com (天渺工作室)</author>
      <category>MySQL</category>
    </item>
  
    </channel>
  </rss>
