<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>编程 on 阿珏酱のBlog</title>
    <link>https://zh.moejue.cn/tags/%E7%BC%96%E7%A8%8B/</link>
    <description>Recent content from 阿珏酱のBlog</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    
    <managingEditor>xxx@example.com (MoeJue)</managingEditor>
    <webMaster>xxx@example.com (MoeJue)</webMaster>
    
    <copyright>本博客所有文章除特别声明外，均采用 BY-NC-SA 许可协议。转载请注明出处！</copyright>
    
    <lastBuildDate>Sat, 19 Sep 2026 00:01:17 +0000</lastBuildDate>
    
    
    <atom:link href="https://zh.moejue.cn/tags/%E7%BC%96%E7%A8%8B/index.xml" rel="self" type="application/rss&#43;xml" />
    

    
    

    <item>
      <title>【进行中】阿珏Blog十周年特别纪念活动</title>
      <link>https://zh.moejue.cn/posts/352/</link>
      <pubDate>Sat, 19 Sep 2026 00:01:17 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/352/</guid>
      <description>
        <![CDATA[<h1>【进行中】阿珏Blog十周年特别纪念活动</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>不知不觉，十年了。</p>
<p>那年的今日,我买了一个域名,租了个虚拟主机,部署了一套博客系统,发表了第一篇文章.</p>
<p>就从那时开始,开始折腾起了这个博客，我大概也没想过，一个博客居然真的能活了十年。</p>
<p>这十年里面换过域名、换过服务器、换过主题，也写过一些现在回头看自己都觉得“这是什么东西”的文章。</p>
<p>当然也断更过。</p>
<p>但不管怎么说，</p>
<p><strong>它真的活到了十周年。</strong></p>
<p>按惯例 <a href="https://moejue.cn/archives/94">【已结束】阿珏Blog三周年特别纪念活动</a>,必然不能这写这一篇文章. ps:这个活动我已经提前好几年就已经开始策划了.</p>
<p>更多的十周年总结部分我准备放到今年的年终总结去,这次就专注哈皮!</p>
<hr>
<h1 id="-十周年特别纪念活动">
<a class="header-anchor" href="#-%e5%8d%81%e5%91%a8%e5%b9%b4%e7%89%b9%e5%88%ab%e7%ba%aa%e5%bf%b5%e6%b4%bb%e5%8a%a8"></a>
🎉 十周年特别纪念活动
</h1><p>这次活动依旧分成两部分：</p>
<p><strong>① 🧩 解密游戏</strong></p>
<pre><code>不要只看页面上显示出来的东西。
链接、图片、文字、源码……
说不定都有用。
</code></pre>
<p><strong>② ✍️十周年文章活动</strong></p>
<pre><code>在自己博客发表一篇任意标题的文章，说出对阿珏的祝福、对阿珏Blog的评价、对阿珏想要说的话，和阿珏经历过的故事等等内容，如果感动到阿珏了呢，那恭喜你哟，中奖啦！
一个人写一篇是一种记录，一群人写下来，就是一段共同的互联网记忆了。
</code></pre>
<h1 id="-活动时间">
<a class="header-anchor" href="#-%e6%b4%bb%e5%8a%a8%e6%97%b6%e9%97%b4"></a>
📅 活动时间
</h1><blockquote>
<p>2026 年 9 月 19 日 – 2026 年 10 月 19 日</p>
</blockquote>
<p>在活动时间内，都可以参加解密游戏和文章活动。</p>
<hr>
<h1 id="兑奖方式">
<a class="header-anchor" href="#%e5%85%91%e5%a5%96%e6%96%b9%e5%bc%8f"></a>
兑奖方式
</h1><ul>
<li>使用兑换码在 <a href="https://moekoe.cn/Product/58">萌音商城</a> 自主下单兑奖</li>
<li>当你中奖时，届时阿珏将通过 <code>moejue@qq.com</code> 发送兑换码到你的评论时所使用的邮箱地址</li>
<li>可选内容，性别、年龄、有无男/女朋友、自拍照、手机型号等，有利于福袋许愿</li>
<li>所有交易方式均为私密方式，不会向任何第三方透露</li>
<li>随机快递包邮，不接受指定</li>
<li>兑换码将在活动结束后正式生效</li>
<li>同一碳基个体仅限一份福袋</li>
<li>奖品会在兑奖后十个自然日内安排寄出</li>
</ul>
<h1 id="活动规则">
<a class="header-anchor" href="#%e6%b4%bb%e5%8a%a8%e8%a7%84%e5%88%99"></a>
活动规则
</h1><ul>
<li>仅限熟人</li>
<li>仅限拥有个人博客的博主</li>
<li>仅限看到这篇文章的人</li>
<li>仅限人品很好的人</li>
<li>仅限很帅的人</li>
<li>仅限很可爱的人</li>
<li>我就是规则！</li>
</ul>
<h1 id="-福袋预览">
<a class="header-anchor" href="#-%e7%a6%8f%e8%a2%8b%e9%a2%84%e8%a7%88"></a>
🎁 福袋预览
</h1><p>手办、公仔、挂件、笔、耳机、卡贴、徽章、明信片、笔记本、扇子、项链、手机贴膜、手绳、戒子、垫子、小抱枕、玩偶、变身棒、ZWB、H漫画、女友、月饼、垃圾、卡片、阿珏酱等内容。</p>
        
        <hr><p>本文2026-09-19首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-09-19</p>]]>
      </description>
      
        <category>谈天说地</category>
      
    </item>
    
    

    <item>
      <title>MoeKoe Music Mobile酷狗音乐第三方移动端播放器</title>
      <link>https://zh.moejue.cn/posts/342/</link>
      <pubDate>Sat, 01 Aug 2026 13:12:42 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/342/</guid>
      <description>
        <![CDATA[<h1>MoeKoe Music Mobile酷狗音乐第三方移动端播放器</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p><img src="assets/images/icon.png" alt="MoeKoe Music"></p>
<p># MoeKoe Music Mobile</p>
<p>一款开源、简洁、高颜值的第三方酷狗音乐移动端播放器</p>
<p>基于 Expo / React Native 构建，是 [MoeKoeMusic](<a href="https://github.com/iAJue/MoeKoeMusic">https://github.com/iAJue/MoeKoeMusic</a>) 桌面版的移动端实现</p>
<p><a href="https://github.com/MoeKoeMusic/MoeKoeMusic-Mobile"><strong>🌎 GitHub仓库</strong></a>  |  <br>
<a href="https://github.com/MoeKoeMusic/MoeKoeMusic-Mobile/releases"><strong>📦️ 下载安装包</strong></a>  |  <br>
<a href="https://MoeJue.cn"><strong>💬 访问博客</strong></a>  |  <br>
<a href="https://Music.MoeKoe.cn"><strong>🏠 项目主页</strong></a></p>
<p><a href="https://github.com/iAJue"><img src="https://img.shields.io/badge/%F0%9F%8E%89_Create_by_iAJue-with_Love_%E2%9D%A4-pink?style=flat-square" alt=""></a></p>
<p>一款开源、简洁、高颜值的第三方酷狗音乐移动端播放器</p>
<p>基于 Expo / React Native 构建，是 <a href="https://github.com/iAJue/MoeKoeMusic">MoeKoeMusic</a> 桌面版的移动端实现</p>
<p><a href="https://expo.dev/"><img src="https://img.shields.io/badge/Expo-SDK%2057-000020?logo=expo&amp;logoColor=white" alt="Expo SDK"></a> <a href="https://reactnative.dev/"><img src="https://img.shields.io/badge/React%20Native-0.86-61DAFB?logo=react&amp;logoColor=white" alt="React Native"></a> <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-6.0-3178C6?logo=typescript&amp;logoColor=white" alt="TypeScript"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/License-GPL--2.0-blue.svg" alt="License"></a> <a href=""><img src="https://img.shields.io/badge/Platform-iOS%20%7C%20Android-lightgrey" alt="Platform"></a></p>
<hr>
<h2 id="-特性">
<a class="header-anchor" href="#-%e7%89%b9%e6%80%a7"></a>
✨ 特性
</h2><ul>
<li>🎵 <strong>无需自建服务器</strong> — 酷狗 API 适配层直接直连官方，开箱即用，不依赖外部 API 地址</li>
<li>🏠 <strong>首页推荐</strong> — 每日推荐、精选歌单、排行榜</li>
<li>🧭 <strong>发现页</strong> — 分类歌单、新歌速递等内容探索</li>
<li>🔍 <strong>搜索</strong> — 快速检索歌曲、歌单、专辑</li>
<li>📀 <strong>歌单 / 专辑 / 排行榜</strong> — 完整的详情页与曲目列表</li>
<li>🎧 <strong>播放器</strong> — 滚动歌词、播放队列、迷你播放条（MiniPlayer）、后台播放</li>
<li>🎚️ <strong>音质检测</strong> — 自动探测并选择可用音质</li>
<li>📱 <strong>手机号登录</strong> — 同步酷狗账号的收藏与歌单</li>
<li>🌗 <strong>深色模式</strong> — 跟随系统自动切换明暗主题</li>
</ul>
<h2 id="-todo-list">
<a class="header-anchor" href="#-todo-list"></a>
📝 Todo List
</h2><ul>
<li>[x] 首页每日推荐 / 精选歌单 / 排行榜</li>
<li>[x] 发现页分类内容浏览</li>
<li>[x] 搜索歌曲、歌单、专辑</li>
<li>[x] 歌单 / 专辑 / 排行榜详情页</li>
<li>[x] 播放器：滚动歌词、播放队列、迷你播放条、后台播放</li>
<li>[x] 音质检测与自动选择</li>
<li>[x] 手机号登录</li>
<li>[x] 账号密码登录</li>
<li>[x] 扫码登录(其他设备)</li>
<li>[x] 我喜欢 / 收藏同步</li>
<li>[x] 用户歌单管理（创建 / 收藏 / 编辑）</li>
<li>[ ] 通知栏 / 锁屏播放控制</li>
<li>[ ] 歌曲详情浏览</li>
<li>[ ] 桌面歌词</li>
<li>[ ] 听歌识曲</li>
<li>[ ] 平板与横屏适配</li>
<li>[ ] 性能优化</li>
</ul>
<h2 id="-预览">
<a class="header-anchor" href="#-%e9%a2%84%e8%a7%88"></a>
📸 预览
</h2><table class="table"><tbody><tr><td><img decoding="async" src="https://github.com/MoeKoeMusic/MoeKoeMusic-Mobile/raw/master/images/screen-1.png" alt="Screenshot 1"></td><td><img decoding="async" src="https://github.com/MoeKoeMusic/MoeKoeMusic-Mobile/raw/master/images/screen-2.png" alt="Screenshot 2"></td><td><img decoding="async" src="https://github.com/MoeKoeMusic/MoeKoeMusic-Mobile/raw/master/images/screen-3.png" alt="Screenshot 3"></td></tr><tr><td><img decoding="async" src="https://github.com/MoeKoeMusic/MoeKoeMusic-Mobile/raw/master/images/screen-4.png" alt="Screenshot 4"></td><td><img decoding="async" src="https://github.com/MoeKoeMusic/MoeKoeMusic-Mobile/raw/master/images/screen-5.png" alt="Screenshot 5"></td><td><img decoding="async" src="https://github.com/MoeKoeMusic/MoeKoeMusic-Mobile/raw/master/images/screen-6.png" alt="Screenshot 6"></td></tr></tbody></table>
<h2 id="-快速开始">
<a class="header-anchor" href="#-%e5%bf%ab%e9%80%9f%e5%bc%80%e5%a7%8b"></a>
🚀 快速开始
</h2><h3 id="环境要求">
<a class="header-anchor" href="#%e7%8e%af%e5%a2%83%e8%a6%81%e6%b1%82"></a>
环境要求
</h3><ul>
<li><a href="https://nodejs.org/">Node.js</a> ≥ 22</li>
<li><a href="https://git-scm.com/">Git</a></li>
<li>iOS 模拟器 / Android 模拟器，或安装了开发版客户端的真机</li>
</ul>
<h3 id="开发运行">
<a class="header-anchor" href="#%e5%bc%80%e5%8f%91%e8%bf%90%e8%a1%8c"></a>
开发运行
</h3><pre><code># 克隆仓库（包含 api submodule）
git clone --recurse-submodules https://github.com/MoeKoeMusic/MoeKoeMusic-Mobile.git
cd MoeKoeMusic-Mobile

# 安装依赖
npm install
npm --prefix api install

# 生成移动端 API 入口（api/ 更新后需重新执行）
npm run generate:mobile-api

# 启动开发服务器
npx expo start
</code></pre>
<blockquote>
<p>如果克隆时遗漏了 submodule，可执行 <code>git submodule update --init</code> 补齐。</p>
        
        <hr><p>本文2026-08-01首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-08-01</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>MoeKoe Music浏览器插件版本,开箱即用</title>
      <link>https://zh.moejue.cn/posts/339/</link>
      <pubDate>Wed, 15 Jul 2026 17:48:40 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/339/</guid>
      <description>
        <![CDATA[<h1>MoeKoe Music浏览器插件版本,开箱即用</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p><img src="https://github.com/MoeKoeMusic/MoeKoeMusic/raw/main/build/icons/linux/256x256.png" alt="MoeKoe Music"></p>
<h2 id="moekoe-music-extension">
<a class="header-anchor" href="#moekoe-music-extension"></a>
MoeKoe Music Extension
</h2><p>MoeKoe Music 浏览器插件版，基于 <a href="https://github.com/MoeKoeMusic/MoeKoeMusic/">MoeKoeMusic Web</a> 构建，并在浏览器扩展内完成 API 路由兼容。</p>
<p><img src="https://img.shields.io/badge/Manifest-V3-4285F4" alt="Manifest V3"> <img src="https://img.shields.io/badge/Vue-3-42b883" alt="Vue"> <img src="https://img.shields.io/badge/Vite-7-646CFF" alt="Vite"> <img src="https://img.shields.io/badge/License-GPL--2.0-blue" alt="License"></p>
<p><a href="https://github.com/MoeKoeMusic/MoeKoe-Music-Extension">🌎 GitHub仓库</a></p>
<h2 id="特性">
<a class="header-anchor" href="#%e7%89%b9%e6%80%a7"></a>
特性
</h2><ul>
<li>点击浏览器插件图标后打开独立窗口运行 MoeKoeMusic。</li>
<li>无需用户配置 API 地址，也无需额外启动本地 API 服务。</li>
<li>保留 MoeKoeMusic 原有 Web 页面与交互，兼容浏览器扩展运行环境。</li>
</ul>
<h2 id="快速开始">
<a class="header-anchor" href="#%e5%bf%ab%e9%80%9f%e5%bc%80%e5%a7%8b"></a>
快速开始
</h2><h3 id="环境要求">
<a class="header-anchor" href="#%e7%8e%af%e5%a2%83%e8%a6%81%e6%b1%82"></a>
环境要求
</h3><ul>
<li>Node.js 20 或更高版本</li>
<li>Git</li>
<li>Chrome / Edge 等 Chromium 内核浏览器</li>
</ul>
<h3 id="安装依赖">
<a class="header-anchor" href="#%e5%ae%89%e8%a3%85%e4%be%9d%e8%b5%96"></a>
安装依赖
</h3><pre><code>git submodule update --init --recursive
npm install
npm run install:app
</code></pre>
<p><code>npm run install:app</code> 会分别安装 <code>MoeKoeMusic</code> 与 <code>MoeKoeMusic/api</code> 的依赖。安装后建议检查子模块工作区，避免把上游 lockfile 的非预期变化提交进去。</p>
        
        <hr><p>本文2026-07-15首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-07-15</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>MoeKoe Music 插件市场设计</title>
      <link>https://zh.moejue.cn/posts/337/</link>
      <pubDate>Sun, 05 Jul 2026 12:54:29 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/337/</guid>
      <description>
        <![CDATA[<h1>MoeKoe Music 插件市场设计</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>在做插件市场之前，先有的是 MoeKoe 的普通插件系统。</p>
<p>当时我想解决的问题不是某一个具体功能，而是一个更通用的问题：播放器里总会冒出很多小需求，有些人想改界面，有些人想加一个工具弹窗，有些人想接自己的服务。如果每个想法都往主程序里塞，主程序会越来越重，也越来越难维护。</p>
<p>所以我一开始给插件系统定的方向很明确：主程序只提供插件运行环境和管理入口，具体功能交给插件自己做。插件能独立安装、独立卸载，坏了也尽量不要影响播放器本体。</p>
<p>上一篇我写的是 <a href="https://moejue.cn/archives/334" title="&lt;code&gt;MoeKoeMusic-Plugins&lt;/code&gt;">MoeKoeMusic-Plugins</a> 这个插件登记仓库。那边解决的是“插件市场的数据怎么产生”：用户用 Issue 提交，Action 校验，维护者审核，通过后写进 <code>plugins.json</code>。</p>
<p>但光有登记仓库还不够。真正对用户来说，插件市场不是 GitHub 上的一份 JSON，而是客户端里一个能看、能搜、能安装、能更新的入口。<br>
所以这篇就换到 MoeKoe Music 主项目里，专门聊客户端的插件市场部分。</p>
<h2 id="为什么选-chrome-extension-这一套">
<a class="header-anchor" href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e9%80%89-chrome-extension-%e8%bf%99%e4%b8%80%e5%a5%97"></a>
为什么选 Chrome Extension 这一套
</h2><p>MoeKoe 是 Electron 应用，Electron 本身就有加载扩展的能力。既然底层已经能跑 Chrome Extension，那就没必要再从零设计一套插件格式。</p>
<p>这样做有几个好处:</p>
<ul>
<li>第一，插件作者不用学一套完全陌生的格式。<code>manifest.json</code>、<code>popup.html</code>、<code>background.js</code> 都是浏览器扩展里很常见的概念。</li>
<li>第二，插件天然有清单文件。主程序可以先读 <code>manifest.json</code>，判断插件名称、版本、描述、权限、弹窗入口、最低支持版本这些信息。</li>
<li>第三，Electron 可以直接加载插件目录，不需要我自己写一个脚本沙箱。</li>
</ul>
<h2 id="展示搜索分页和状态">
<a class="header-anchor" href="#%e5%b1%95%e7%a4%ba%e6%90%9c%e7%b4%a2%e5%88%86%e9%a1%b5%e5%92%8c%e7%8a%b6%e6%80%81"></a>
展示、搜索、分页和状态
</h2><p>插件市场不是只要能安装就行，还要能快速判断：</p>
<ul>
<li>这个插件是干什么的</li>
<li>我有没有装过</li>
<li>我装的是不是旧版本</li>
<li>这个插件有没有更高版本要求</li>
<li>它有没有联网、文件访问、本地二进制这些风险点</li>
<li>分页,搜索,更新,状态</li>
</ul>
<p>所以市场卡片里展示的不只是“安装”按钮。</p>
<ol>
<li>确保插件目录存在</li>
<li>调用Electron下载安装、卸旧版、装新版</li>
<li>注册插件相关 IPC</li>
<li>加载 Chrome 扩展</li>
<li>加载 Native Host 索引和授权系统</li>
</ol>
<h2 id="已安装插件">
<a class="header-anchor" href="#%e5%b7%b2%e5%ae%89%e8%a3%85%e6%8f%92%e4%bb%b6"></a>
已安装插件
</h2><p>插件管理页里的“已安装插件”不是只读 Electron 当前加载的扩展。它会把两类信息合并：</p>
<ul>
<li><code>session.defaultSession.getAllExtensions()</code> 拿到已加载扩展</li>
<li><code>scanExtensions()</code> 扫描磁盘插件目录，读取 manifest、图标、popup、Native Host 声明</li>
</ul>
<p>前端拿到这些字段后，就能显示：</p>
        
        <hr><p>本文2026-07-05首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-07-05</p>]]>
      </description>
      
        <category>折腾代码</category><category>教程</category>
      
    </item>
    
    

    <item>
      <title>MoeKoeMusic-Plugins设计理念</title>
      <link>https://zh.moejue.cn/posts/334/</link>
      <pubDate>Sat, 20 Jun 2026 11:45:33 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/334/</guid>
      <description>
        <![CDATA[<h1>MoeKoeMusic-Plugins设计理念</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>一开始做 MoeKoe Music 插件生态的时候，还没有在线插件市场这个功能<br>
后来在社区的建议下便有了这个插件市场 <a href="https://github.com/orgs/MoeKoeMusic/discussions/888">增加官方/社区插件仓库以扩展产品功能</a></p>
<blockquote>
<p>插件可以由社区开发，那插件市场应该怎么管？</p>
</blockquote>
<p>最直接的做法当然是把所有插件源码都收进一个大仓库里。但这个方案越想越别扭。每个插件都有自己的作者、自己的发布节奏、自己的构建方式。把它们全塞进官方仓库，不仅维护成本高，也会把责任边界搞得很模糊。</p>
<p>所以这个仓库最后没有被设计成“插件源码仓库”，而是变成了一个“插件登记与索引仓库”。它只做几件事：</p>
<ul>
<li>接收插件上架、更新、下架和举报申请</li>
<li>自动做一轮基础校验和静态识别</li>
<li>把人工审核通过时的插件快照记录下来</li>
<li>维护客户端可以读取的 <code>plugins.json</code></li>
<li>顺手把 README 里的插件列表更新出来，方便人看</li>
</ul>
<p>一个可追溯的登记簿：谁提交的、审核的是哪个版本、下载地址是什么、是否有网络或文件权限，都落在一份清楚的数据里。</p>
<h2 id="市场索引而不是源码仓库">
<a class="header-anchor" href="#%e5%b8%82%e5%9c%ba%e7%b4%a2%e5%bc%95%e8%80%8c%e4%b8%8d%e6%98%af%e6%ba%90%e7%a0%81%e4%bb%93%e5%ba%93"></a>
市场索引，而不是源码仓库
</h2><p>仓库根目录最重要的文件是 <code>plugins.json</code>。它就是插件市场真正消费的数据源。</p>
<pre><code>{
  &quot;id&quot;: &quot;custom-app-background&quot;,
  &quot;name&quot;: &quot;自定义背景图&quot;,
  &quot;description&quot;: &quot;为MoeKoe Music提供自定义背景图能力，支持透明度调节。&quot;,
  &quot;iconUrl&quot;: &quot;...&quot;,
  &quot;version&quot;: &quot;1.0.0&quot;,
  &quot;minversion&quot;: &quot;1.6.1&quot;,
  &quot;...&quot;:&quot;....&quot;,
  &quot;buildRequired&quot;: false,
  &quot;networkAccess&quot;: false,
  &quot;fileAccess&quot;: false,
  &quot;binaryContent&quot;: false,
  &quot;snapshot&quot;: {
    &quot;iconUrl&quot;: &quot;...&quot;,
    &quot;repository&quot;: &quot;MoeKoeMusic/custom-app-background-plugin&quot;,
    &quot;commitSha&quot;: &quot;dbf72d38c8cf6b1d1cefdf8ce15798d565678995&quot;,
    &quot;downloadUrl&quot;: &quot;hxx.zip&quot;,
    &quot;release&quot;: null
  }
}
</code></pre>
<p>我不想让市场记录永远指向插件仓库“当前最新代码”。因为作者今天提交的代码，和审核那天看到的代码，可能已经不是同一份东西了。插件市场真正应该承认的是：审核通过时的那个版本。</p>
<p>所以这个项目里面有一个核心原则：</p>
<blockquote>
<p>上架的不是一个会漂移的仓库地址，而是一个已经锁定的快照。</p>
</blockquote>
<p>对于不需要编译的插件，快照锁到默认分支当时的 commit。对于需要编译的插件，快照锁到对应的 Release tag 和发行附件。这样后面真出了问题，也能回头知道当时到底审核了什么。</p>
<h2 id="action-先跑人最后拍板">
<a class="header-anchor" href="#action-%e5%85%88%e8%b7%91%e4%ba%ba%e6%9c%80%e5%90%8e%e6%8b%8d%e6%9d%bf"></a>
Action 先跑，人最后拍板
</h2><p>用户提交 Issue 时，需要选择：</p>
        
        <hr><p>本文2026-06-20首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-06-20</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>我用WebGL做18&#43;游戏，输了“掉装备”🔞</title>
      <link>https://zh.moejue.cn/posts/332/</link>
      <pubDate>Sat, 13 Jun 2026 11:38:47 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/332/</guid>
      <description>
        <![CDATA[<h1>我用WebGL做18+游戏，输了“掉装备”🔞</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>紧接上文：<a href="https://moejue.cn/archives/328">《同一个动画，我用三种技术栈实现的区别?》</a></p>
<h4 id="webgl-二次元石头剪刀布小游戏">
<a class="header-anchor" href="#webgl-%e4%ba%8c%e6%ac%a1%e5%85%83%e7%9f%b3%e5%a4%b4%e5%89%aa%e5%88%80%e5%b8%83%e5%b0%8f%e6%b8%b8%e6%88%8f"></a>
WebGL 二次元石头剪刀布小游戏。
</h4><p>规则很普通：</p>
<ul>
<li>石头 &gt; 剪刀</li>
<li>剪刀 &gt; 布</li>
<li>布 &gt; 石头</li>
</ul>
<p>但有趣的是在于：</p>
<h4 id="输了会脱衣服">
<a class="header-anchor" href="#%e8%be%93%e4%ba%86%e4%bc%9a%e8%84%b1%e8%a1%a3%e6%9c%8d"></a>
输了会脱衣服。
</h4><p>对,就是这么简单粗暴。</p>
<hr>
<h2 id="起因其实是我想研究精灵图">
<a class="header-anchor" href="#%e8%b5%b7%e5%9b%a0%e5%85%b6%e5%ae%9e%e6%98%af%e6%88%91%e6%83%b3%e7%a0%94%e7%a9%b6%e7%b2%be%e7%81%b5%e5%9b%be"></a>
起因其实是“我想研究精灵图”
</h2><p>一开始我根本没想做游戏。<br>
我只是想研究：</p>
<ul>
<li>atlas</li>
<li>sprite</li>
<li>图层叠加</li>
<li>动画裁剪</li>
</ul>
<p>这些东西。<br>
然后想着：“总得有个实际应用场景吧？”</p>
<p>于是脑子一抽：</p>
<h4 id="那干脆做个二次元脱衣猜拳">
<a class="header-anchor" href="#%e9%82%a3%e5%b9%b2%e8%84%86%e5%81%9a%e4%b8%aa%e4%ba%8c%e6%ac%a1%e5%85%83%e8%84%b1%e8%a1%a3%e7%8c%9c%e6%8b%b3"></a>
那干脆做个二次元脱衣猜拳。
</h4><p>然后项目开始朝奇怪方向狂奔。</p>
<hr>
<h2 id="这个项目最麻烦的其实不是游戏逻辑">
<a class="header-anchor" href="#%e8%bf%99%e4%b8%aa%e9%a1%b9%e7%9b%ae%e6%9c%80%e9%ba%bb%e7%83%a6%e7%9a%84%e5%85%b6%e5%ae%9e%e4%b8%8d%e6%98%af%e6%b8%b8%e6%88%8f%e9%80%bb%e8%be%91"></a>
这个项目最麻烦的其实不是游戏逻辑
</h2><p>石头剪刀布规则简单得离谱。<br>
真正麻烦的是：<strong>衣服层级</strong><br>
因为角色不是：<strong>“一张完整图片”</strong></p>
<p>而是：</p>
<ul>
<li>底图 (防粿体被抓包,特意加密了)</li>
<li>衣服 A</li>
<li>衣服 B</li>
<li>衣服 C</li>
<li>配饰</li>
<li>遮挡层</li>
</ul>
<p>不停叠。</p>
<hr>
<h2 id="脱衣其实是图层管理">
<a class="header-anchor" href="#%e8%84%b1%e8%a1%a3%e5%85%b6%e5%ae%9e%e6%98%af%e5%9b%be%e5%b1%82%e7%ae%a1%e7%90%86"></a>
“脱衣”其实是图层管理
</h2><p>玩家赢了：</p>
<ul>
<li>按设定好的顺序移除一件衣服</li>
</ul>
<p>电脑赢了：</p>
<ul>
<li>再按逆序穿回来</li>
</ul>
<p>听起来简单。<br>
实际上会遇到一堆问题：</p>
<hr>
<h3 id="比如不能瞬间露底图">
<a class="header-anchor" href="#%e6%af%94%e5%a6%82%e4%b8%8d%e8%83%bd%e7%9e%ac%e9%97%b4%e9%9c%b2%e5%ba%95%e5%9b%be"></a>
比如“不能瞬间露底图”
</h3><p>这个特别关键。<br>
如果你：</p>
<pre><code>先删旧衣服
再加新衣服
</code></pre>
<p>中间可能会闪出底图。<br>
于是视觉效果会特别怪。<br>
所以我后来用了：<strong>reveal 覆盖逻辑</strong></p>
<p>新的层会立刻顶上。<br>
尽量避免：</p>
        
        <hr><p>本文2026-06-13首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-06-13</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>同一个动画，我用三种技术栈实现的区别?</title>
      <link>https://zh.moejue.cn/posts/328/</link>
      <pubDate>Fri, 29 May 2026 20:54:39 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/328/</guid>
      <description>
        <![CDATA[<h1>同一个动画，我用三种技术栈实现的区别?</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>最近我做了个挺有意思的小实验。<br>
我把一个二次元角色的小动画效果，分别用：</p>
<ul>
<li>WebGL</li>
<li>Canvas 2D</li>
<li>纯 DOM + CSS</li>
</ul>
<p>实现了三遍。<br>
效果本身不复杂：</p>
<ul>
<li>眨眼</li>
<li>眉毛/下眼皮联动</li>
<li>流汗轻微飘动</li>
<li>呆毛甩动</li>
</ul>
<p>但真正有意思的，其实不是“做出来”。<br>
而是：</p>
<blockquote>
<p>同一个东西，用三种技术栈实现时，到底会差多少？</p>
</blockquote>
<p>本质上就是一次“前端图形学味很浓”的复刻实验。</p>
<hr>
<h3 id="一开始只是想复刻一个呆毛动画">
<a class="header-anchor" href="#%e4%b8%80%e5%bc%80%e5%a7%8b%e5%8f%aa%e6%98%af%e6%83%b3%e5%a4%8d%e5%88%bb%e4%b8%80%e4%b8%aa%e5%91%86%e6%af%9b%e5%8a%a8%e7%94%bb"></a>
一开始只是想复刻一个呆毛动画
</h3><p>灵感来源：<a href="https://tamanidamani.itch.io/nijikas-ahoge">https://tamanidamani.itch.io/nijikas-ahoge</a><br>
我当时想法特别简单：“如果是我,要怎么实现？”<br>
然后越做越上头。最后直接演变成：</p>
<blockquote>
<p>那我干脆把 WebGL、Canvas2D、DOM 三种方案都做一遍算了。</p>
</blockquote>
<p>于是仓库就变成了现在这样：</p>
<ul>
<li><a href="https://iajue.github.io/CanvasGame/canvas/index.html">canvas/</a></li>
<li><a href="https://iajue.github.io/CanvasGame/canvas2D/index.html">canvas2D/</a></li>
<li><a href="https://iajue.github.io/CanvasGame/dom/index.html">dom/</a></li>
</ul>
<p>三个版本同效果实现。</p>
<hr>
<h2 id="先说结论">
<a class="header-anchor" href="#%e5%85%88%e8%af%b4%e7%bb%93%e8%ae%ba"></a>
先说结论
</h2><p>如果只让我说一句话：</p>
<h4 id="webgl-最强但-canvas2d-最舒服dom-最适合业务">
<a class="header-anchor" href="#webgl-%e6%9c%80%e5%bc%ba%e4%bd%86-canvas2d-%e6%9c%80%e8%88%92%e6%9c%8ddom-%e6%9c%80%e9%80%82%e5%90%88%e4%b8%9a%e5%8a%a1"></a>
WebGL 最强，但 Canvas2D 最舒服，DOM 最适合业务
</h4><hr>
<h2 id="1-webgl-版本最像真正游戏开发">
<a class="header-anchor" href="#1-webgl-%e7%89%88%e6%9c%ac%e6%9c%80%e5%83%8f%e7%9c%9f%e6%ad%a3%e6%b8%b8%e6%88%8f%e5%bc%80%e5%8f%91"></a>
1. WebGL 版本：最像“真正游戏开发”
</h2><p>这个版本是最折腾的。<br>
因为它本质上已经不是“前端动画”了, 而是：<strong>GPU 图形编程</strong></p>
<hr>
<h3 id="它到底怎么实现的">
<a class="header-anchor" href="#%e5%ae%83%e5%88%b0%e5%ba%95%e6%80%8e%e4%b9%88%e5%ae%9e%e7%8e%b0%e7%9a%84"></a>
它到底怎么实现的？
</h3><p>核心思路其实就是：</p>
<ul>
<li>底图一层</li>
<li>精灵图一层层贴</li>
<li>shader 控制绘制</li>
<li>JS 驱动动画参数</li>
</ul>
<p>比如：</p>
<ul>
<li>呆毛旋转</li>
<li>眨眼裁剪</li>
<li>alpha 混合</li>
</ul>
<p>这些其实都在 GPU 那边做。<br>
你会开始接触：</p>
<ul>
<li>uniform</li>
<li>texture</li>
<li>shader</li>
<li>UV</li>
<li>顶点坐标</li>
<li>纹理坐标</li>
</ul>
<p>然后人会逐渐失去笑容。</p>
        
        <hr><p>本文2026-05-29首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-05-29</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>杀死那个手写代码的人</title>
      <link>https://zh.moejue.cn/posts/324/</link>
      <pubDate>Tue, 05 May 2026 20:22:07 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/324/</guid>
      <description>
        <![CDATA[<h1>杀死那个手写代码的人</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p><img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2026/05/05/ChatGPTImage.jpg" alt="图 90"></p>
<p>最近写代码的时候，我有一种很奇怪的感觉。</p>
<p>不是写不动了，也不是不想写，而是——<br>
<strong>好像越来越不需要我写了。</strong></p>
<p>以前一个功能，从需求到上线，基本是这样的路径：</p>
<p>我理解需求 → 设计方案 → 写代码 → 调试 → 改 bug → 上线</p>
<p>现在变成什么样？</p>
<p>我描述需求 → AI 写代码 → AI 改 bug → 我看一眼 → 上线</p>
<p>中间那一大段“写代码”的过程，突然变得很薄，甚至可以没有。</p>
<p>这件事，一开始挺爽的。<br>
但爽着爽着，会有点不安。</p>
<p>过去程序员，除了「完成任务」后获得的成就感，在整个写代码的过程中也能体会到很多乐趣。<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2026/05/05/AC1D7ECA3FF4B43A59565408847C79A4.jpg" alt="图 86"></p>
<hr>
<h2 id="写代码这件事好像没那么重要了">
<a class="header-anchor" href="#%e5%86%99%e4%bb%a3%e7%a0%81%e8%bf%99%e4%bb%b6%e4%ba%8b%e5%a5%bd%e5%83%8f%e6%b2%a1%e9%82%a3%e4%b9%88%e9%87%8d%e8%a6%81%e4%ba%86"></a>
写代码这件事，好像没那么重要了
</h2><p>我以前一直觉得，程序员最核心的能力，就是写代码。</p>
<p>你写得快不快、优不优雅、抽象得好不好，这些东西构成了“水平”的差异。</p>
<p>但现在，这套标准在慢慢失效。</p>
<p>很多代码，其实 AI 写得比人快，也不一定比人差。</p>
<p>尤其是那种：</p>
<ul>
<li>CRUD</li>
<li>接口对接</li>
<li>常规逻辑处理</li>
</ul>
<p>这些东西，AI 基本是碾压式效率。</p>
<p>有时候我自己写了一段，还会下意识丢给 AI：</p>
<p>“你帮我优化一下”</p>
<p>结果它不仅优化了，还顺手把我没想到的情况补上了。</p>
<p>那一刻会有点微妙——<br>
<strong>你开始分不清，这段代码到底是谁写的。</strong><br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2026/05/05/585251391-f52fd2e0-c305-47c6-9ef0-99158effae5f.jpg" alt="图 89"></p>
<hr>
<h2 id="更诡异的是你开始不想自己写了">
<a class="header-anchor" href="#%e6%9b%b4%e8%af%a1%e5%bc%82%e7%9a%84%e6%98%af%e4%bd%a0%e5%bc%80%e5%a7%8b%e4%b8%8d%e6%83%b3%e8%87%aa%e5%b7%b1%e5%86%99%e4%ba%86"></a>
更诡异的是：你开始不想自己写了
</h2><p>这才是最危险的。</p>
<p>以前写代码，是一种“控制感”：</p>
<p>每一行都是我敲出来的，我知道它为什么这样写，也知道哪里可能出问题。</p>
<p>但现在，当你习惯了把问题丢给 AI，你会发现：</p>
<blockquote>
<p>自己写，反而变慢了。</p>
</blockquote>
<p>甚至会有一种感觉：</p>
<p><strong>“我为什么要亲自写？”</strong></p>
<p>这不是偷懒，这是效率的自然选择。</p>
<p>就像你不会手算大整数一样，你也不会再想手写那些“可以被自动完成”的代码。</p>
<hr>
<h2 id="程序员正在变成另外一种角色">
<a class="header-anchor" href="#%e7%a8%8b%e5%ba%8f%e5%91%98%e6%ad%a3%e5%9c%a8%e5%8f%98%e6%88%90%e5%8f%a6%e5%a4%96%e4%b8%80%e7%a7%8d%e8%a7%92%e8%89%b2"></a>
程序员，正在变成另外一种角色
</h2><p>慢慢你会发现，你每天在做的事情变了。</p>
        
        <hr><p>本文2026-05-05首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-05-05</p>]]>
      </description>
      
        <category>谈天说地</category>
      
    </item>
    
    

    <item>
      <title>Web3 链上红包 DApp</title>
      <link>https://zh.moejue.cn/posts/303/</link>
      <pubDate>Sat, 10 Jan 2026 14:02:35 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/303/</guid>
      <description>
        <![CDATA[<h1>Web3 链上红包 DApp</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>这是一个<strong>100%去中心化</strong>的区块链红包应用。用户可以连接钱包，设定金额和数量发送红包，然后通过链接分享给他人领取。所有数据和操作都基于区块链，完全不需要中心化服务器，整个过程安全、透明、可追溯。</p>
<p>如果你感兴趣，可以在 GitHub 上看看我的代码：<a href="https://github.com/iAJue/redpacket-dapp">redpacket‑dapp</a></p>
<h2 id="功能亮点">
<a class="header-anchor" href="#%e5%8a%9f%e8%83%bd%e4%ba%ae%e7%82%b9"></a>
功能亮点
</h2><ul>
<li>🧧 <strong>发送红包</strong>: 连接钱包后，设置金额和数量发送红包到区块链</li>
<li>🎁 <strong>领取红包</strong>: 通过分享链接，别人可以连接钱包直接从区块链领取红包</li>
<li>🔗 <strong>智能合约</strong>: 使用 Solidity 编写的安全智能合约处理所有逻辑</li>
<li>🌐 <strong>多链支持</strong>: 支持本地测试网和 BSC 测试网</li>
<li>💼 <strong>Web3 集成</strong>: 使用 MetaMask 钱包连接</li>
<li>🚀 <strong>完全去中心化</strong>: 没有后端服务器，所有数据存储在区块链</li>
</ul>
<h2 id="技术栈">
<a class="header-anchor" href="#%e6%8a%80%e6%9c%af%e6%a0%88"></a>
技术栈
</h2><ul>
<li><strong>前端</strong>：React 19、React Router 6、TypeScript、Vite、Ethers v6</li>
<li><strong>合约层</strong>：Hardhat、Solidity 0.8.x</li>
<li><strong>工具</strong>：ESLint、Prettier</li>
<li><strong>不需要后端</strong>: 零依赖服务器 ❌</li>
</ul>
<h2 id="快速启动">
<a class="header-anchor" href="#%e5%bf%ab%e9%80%9f%e5%90%af%e5%8a%a8"></a>
快速启动
</h2><pre><code># 1. 安装项目依赖
npm install
cd react-dapp &amp;&amp; npm install &amp;&amp; cd ..

# 2. 启动本地区块链节点
npm run node

# 3. 编译智能合约
npx hardhat compile

# 4. 部署智能合约
npm run deploy

# 5. 启动前端
npm run frontend
</code></pre>
<h2 id="目录结构">
<a class="header-anchor" href="#%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84"></a>
目录结构
</h2><pre><code>redpacket-web3/
├─ contracts/                # Solidity 智能合约
│  └─ RedPacket.sol
├─ react-dapp/               # React + Vite 前端
│  ├─ src/
│  │  ├─ components/         # 通用组件（钱包按钮、创建表单等）
│  │  ├─ config/             # ABI、合约地址配置
│  │  ├─ hooks/              # 自定义 hooks（useWallet）
│  │  ├─ pages/              # 页面（Home、ClaimPacket）
│  │  ├─ styles/             # 全局样式
│  │  ├─ utils/              # Web3 工具函数
│  │  └─ App.tsx             # 路由与布局
│  ├─ .env.example           # 前端所需的环境变量说明
│  └─ package.json
├─ scripts/
│  └─ deploy.js              # Hardhat 部署脚本（会自动写入前端配置）
├─ hardhat.config.js
└─ package.json              # 根目录脚本（Hardhat + 前端一键启动）
</code></pre>
<h2 id="使用指南">
<a class="header-anchor" href="#%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97"></a>
使用指南
</h2><h3 id="创建红包">
<a class="header-anchor" href="#%e5%88%9b%e5%bb%ba%e7%ba%a2%e5%8c%85"></a>
创建红包
</h3><ol>
<li>打开前端并点击右上角「连接钱包」。</li>
<li>填写红包总金额与份数，应用会在前端随机拆分金额。</li>
<li>提交后在 MetaMask 中确认交易，等待区块确认。</li>
<li>成功后可复制系统生成的领取链接，分享给朋友。</li>
</ol>
<h3 id="领取红包">
<a class="header-anchor" href="#%e9%a2%86%e5%8f%96%e7%ba%a2%e5%8c%85"></a>
领取红包
</h3><ol>
<li>打开分享链接（URL 带有 <code>/claim/{packetId}</code>）。</li>
<li>同样先连接钱包，然后点击「点击领取」。</li>
<li>签名确认后等待区块打包，页面会显示结果与剩余份数。</li>
</ol>
<h2 id="环境变量">
<a class="header-anchor" href="#%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f"></a>
环境变量
</h2><ul>
<li><code>dapp/.env</code>（开发环境会自动忽略，请参考 <code>.env.example</code>）
<ul>
<li><code>VITE_RPC_URL</code>：前端直连节点 RPC，默认为 <code>http://127.0.0.1:8545</code></li>
<li><code>VITE_CONTRACT_ADDRESS</code>：可覆盖部署脚本写入的地址</li>
<li><code>VITE_CHAIN_ID</code>：前端提示使用的链 ID（十六进制）</li>
</ul>
</li>
<li><code>root/.env</code>：若需要在 Hardhat 中引用私钥或 BSC RPC，可继续沿用原有写法。</li>
</ul>
<h2 id="智能合约redpacketsol">
<a class="header-anchor" href="#%e6%99%ba%e8%83%bd%e5%90%88%e7%ba%a6redpacketsol"></a>
智能合约（RedPacket.sol）
</h2><p>核心方法：</p>
        
        <hr><p>本文2026-01-10首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-01-10</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>萌音商城移动端版本发售</title>
      <link>https://zh.moejue.cn/posts/256/</link>
      <pubDate>Thu, 17 Apr 2025 09:07:11 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/256/</guid>
      <description>
        <![CDATA[<h1>萌音商城移动端版本发售</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <h3 id="项目介绍">
<a class="header-anchor" href="#%e9%a1%b9%e7%9b%ae%e4%bb%8b%e7%bb%8d"></a>
项目介绍
</h3><p>萌音商城移动版是一个基于uniapp开发的多端商城系统，支持iOS、Android、H5及小程序等多个平台。系统采用PHP + MySQL + FastAdmin作为后端技术栈，实现了完整的电商功能。</p>
<h3 id="核心功能">
<a class="header-anchor" href="#%e6%a0%b8%e5%bf%83%e5%8a%9f%e8%83%bd"></a>
核心功能
</h3><ul>
<li>商品管理：分类、列表、详情展示</li>
<li>购物流程：购物车、结算、支付、订单管理</li>
<li>用户系统：会员中心、个人信息管理</li>
<li>多商户模式：商户独立管理商品与订单</li>
<li>发货系统: 支持推送订单至ERP(管家婆)系统处理</li>
<li>双模式交易：
<ul>
<li>线上下单快递发货</li>
<li>线上下单到店自取/骑手配送</li>
</ul>
</li>
</ul>
<h3 id="系统预览">
<a class="header-anchor" href="#%e7%b3%bb%e7%bb%9f%e9%a2%84%e8%a7%88"></a>
系统预览
</h3><h4 id="后台管理界面">
<a class="header-anchor" href="#%e5%90%8e%e5%8f%b0%e7%ae%a1%e7%90%86%e7%95%8c%e9%9d%a2"></a>
后台管理界面
</h4><p><img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111108_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111207_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111236_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111316_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111333_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111348_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111425_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-114400_04_17_2025.jpg" alt=""></p>
<h4 id="小程序端界面">
<a class="header-anchor" href="#%e5%b0%8f%e7%a8%8b%e5%ba%8f%e7%ab%af%e7%95%8c%e9%9d%a2"></a>
小程序端界面
</h4><p><img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-115015_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-115348_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/Screenshot_2025-04-17-11-51-48-260_com.tencent.mm_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/Screenshot_2025-04-17-11-51-41-636_com.tencent.mm_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/Screenshot_2025-04-17-11-51-32-607_com.tencent.mm_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/Screenshot_2025-04-17-11-51-28-173_com.tencent.mm_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/Screenshot_2025-04-17-11-51-14-865_com.tencent.mm_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-115521_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-115423_04_17_2025.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-115405_04_17_2025.jpg" alt=""></p>
<h3 id="版本说明">
<a class="header-anchor" href="#%e7%89%88%e6%9c%ac%e8%af%b4%e6%98%8e"></a>
版本说明
</h3><p>当前版本为V1.0版，部分界面为预留规划，将根据实际需求持续更新完善。 由于没有正式发布版本，上线小程序运营，所以没有线上版本可供演示 目前程序处于V1.0初版，部分界面是提前预留规划的，后期会根据需求进行更新</p>
<h3 id="购买说明">
<a class="header-anchor" href="#%e8%b4%ad%e4%b9%b0%e8%af%b4%e6%98%8e"></a>
购买说明
</h3><ul>
<li>价格：188元 (版本更新后将会视情况调整价格，请以实际价格为准)</li>
<li>内容：完整源代码（含移动端和后台，无加密无授权）</li>
<li>推荐返利：推荐好友购买可获20%返利</li>
<li>更新服务：终身免费更新</li>
<li>使用须知：禁止私自转售，违规将停止更新服务</li>
<li>开发支持：源码含详细注释，方便二次开发</li>
<li>项目托管：代码托管于GitHub，更新日志完整透明</li>
<li>多端支持: 需要自行编译其他客户端，基于微信小程序环境开</li>
</ul>
<h3 id="联系方式">
<a class="header-anchor" href="#%e8%81%94%e7%b3%bb%e6%96%b9%e5%bc%8f"></a>
联系方式
</h3><ul>
<li>QQ交流群：<a href="https://qm.qq.com/q/Fhqk6HKUaQ">点击加入</a></li>
<li>由于没有个人QQ链接，加群后请@群主咨询购买事宜</li>
<li>项目滞销了，请帮帮阿珏酱</li>
</ul>
<h3 id="在线演示">
<a class="header-anchor" href="#%e5%9c%a8%e7%ba%bf%e6%bc%94%e7%a4%ba"></a>
在线演示
</h3><ul>
<li><a href="https://v.douyin.com/3l90gHoAf0A/">微信小程序端演示视频</a></li>
<li>后台演示环境请联系咨询</li>
<li>微信小程序可联系添加体验权限</li>
</ul>
        
        <hr><p>本文2025-04-17首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2025-09-06</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
  </channel>
</rss>
