<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Mole-Go on 豆子技术站</title><link>https://blog.91demo.top/tags/mole-go.html</link><description>Recent content in Mole-Go on 豆子技术站</description><generator>Hugo -- 0.155.1</generator><language>zh-cn</language><lastBuildDate>Wed, 11 Feb 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://blog.91demo.top/tags/mole-go/index.xml" rel="self" type="application/rss+xml"/><item><title>Wails 3 进阶实战：基于 Go 语言实现 frp 自动化管理客户端的代码深度解析</title><link>https://blog.91demo.top/go/mole-summary.html</link><pubDate>Wed, 11 Feb 2026 10:00:00 +0800</pubDate><guid>https://blog.91demo.top/go/mole-summary.html</guid><description>&lt;h2 id="一-项目设计核心思想"&gt;一、 项目设计核心思想&lt;/h2&gt;
&lt;p&gt;本项目的核心定位是内网穿透的一键化管理。参考 ngrok 的服务模式，通过自建 frp 服务器 提供稳定中转，将复杂的配置封装在 Wails 客户端中。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;商业闭环：通过微信小程序激励视频获取连接权限（2小时有效期）。&lt;/li&gt;
&lt;li&gt;用户体验：一键连接、自动分配二级域名、配置持久化。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="二-前端架构原生-js-的三维交互"&gt;二、 前端架构：原生 JS 的三维交互&lt;/h2&gt;
&lt;p&gt;为了保持轻量，前端放弃了重量级框架，采用原生 JS 与 Wails 运行时通信。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;控制面板 (Dashboard)：状态驱动 UI。涉及扫码弹窗逻辑、广告验证状态机。&lt;/li&gt;
&lt;li&gt;配置页面 (Settings)：表单处理。重点在于 Local Port 的保存与通过 Wails Bind 将数据下发给 Go 后端。&lt;/li&gt;
&lt;li&gt;运行日志 (Logs)：虚拟黑屏终端。难点在于实时流式展示后端 frpc 吐出的日志。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="三-后端核心技术要点"&gt;三、 后端核心技术要点&lt;/h2&gt;
&lt;p&gt;将按照应用生命周期逻辑，对以下模块进行深度归纳：&lt;br&gt;
a. 应用原生窗口定义&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;结构化管理：AppManager 模式&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// AppManager 统一管理应用和窗口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;AppManager&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;App&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;application&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;App&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;MainWindow&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;application&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Window&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;manager&lt;/span&gt; = &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;AppManager&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;采用了 AppManager 结构体来统一持有 App 实例和 MainWindow 实例。&lt;br&gt;
知识点：在 Wails 3 中，不再像 v2 那样通过上下文（ctx）传递，而是鼓励通过对象持有的方式管理窗口引用。这方便了后续在任何 Service 中通过 manager.MainWindow 直接操控窗口（如置顶、隐藏、发送事件）。&lt;/p&gt;</description></item><item><title>拒绝频繁上传：基于 Dufs + Mole-go (FRP) 快速搭建高效的内网穿透演示环境</title><link>https://blog.91demo.top/devops/mole-devenv.html</link><pubDate>Thu, 15 Jan 2026 18:00:00 +0800</pubDate><guid>https://blog.91demo.top/devops/mole-devenv.html</guid><description>&lt;p&gt;最近开发完 Mole-go，想给它做个网站用来展示和下载。但我这个后端糙汉子，样式真搞不定，求助 AI 调了半天还是差点意思。最头疼的是，手机端调试得一遍遍输 IP，给朋友演示也得发一串 IP 端口，太不专业了！于是我一顿折腾，搞出了这套方案……&lt;/p&gt;
&lt;p&gt;为了解决这些痛点，我摸索出了一套“黄金组合”：Dufs + Mole-go + FRP + Caddy。这套方案打通了从本地到公网域名的全链路，实现了自动 HTTPS、域名访问以及极致的访问体验。&lt;/p&gt;
&lt;h2 id="第一步构建本地内容基石dufs"&gt;第一步：构建本地内容基石（Dufs）&lt;/h2&gt;
&lt;p&gt;一切的起点是本地文件服务。我选择使用 Dufs 作为静态服务器。它极其轻量，支持上传、搜索、打包下载甚至 WebDAV，是我演示 Web 应用或分发安装包的首选。&lt;/p&gt;
&lt;p&gt;通过简单的命令，我在本地 5000 端口启动了服务。虽然此时它还被“困”在局域网内，但它为后续的展示提供了稳固的基础。&lt;/p&gt;
&lt;h2 id="第二步突破局域网束缚frp-与-mole-go"&gt;第二步：突破局域网束缚（FRP 与 Mole-go）&lt;/h2&gt;
&lt;p&gt;为了让公网流量能精准触达内网，我采用了经典的 FRP 方案，但在客户端层面，我使用了自己开发的 Mole-go。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;服务端 (FRP Server)：部署在具备公网 IP 的云服务器上，充当流量中转站。这个服务器配置可以很低，网站服务都在本地电脑，如果本地有数据库，也非常方便调试。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;客户端 (Mole-go)：这是我为 FRP 打造的桌面管理客户端。它封装了 frpc 核心，不仅提供了直观的 UI，还通过系统托盘设计彻底解决了“关闭窗口即断连”的痛点。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使用 Mole-go，我可以将本地 5000 端口通过加密隧道安全地映射到云端。它出色的资源管理和连接稳定性，确保了演示过程中即便网络波动，链接依然稳固如初。&lt;/p&gt;
&lt;h2 id="第三步优雅的网关入口caddy"&gt;第三步：优雅的网关入口（Caddy）&lt;/h2&gt;
&lt;p&gt;即便流量已到达公网，我也不希望朋友们通过 http://IP:端口 这种生硬的方式访问。我追求的是“域名+HTTPS”的专业感，这不仅是为了美观，更是为了开发环境需求，下次开发公众号等必须 HTTPS 环境时可以拿来就直接使用。&lt;/p&gt;
&lt;p&gt;我选择了 Caddy 担任“守门人”。Caddy 的魅力在于其近乎零配置的 自动 HTTPS 功能。看中了它的简单方便，非常符合我的场景。在 Caddyfile 中，我只需写下：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;example.com {   
reverse_proxy localhost:7000  # 指向 FRP 映射出的本地端口
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;仅需这一行配置，Caddy 就会自动搞定 SSL 证书的申请与续签。当访问者输入域名时，映入眼帘的是受信任的绿色小锁头，所有的复杂端口逻辑都被完美隐藏。&lt;/p&gt;</description></item><item><title>深度实战：基于 Wails v3 与 Go 打造跨平台 FRP 桌面客户端 Mole-go 的技术架构与原理</title><link>https://blog.91demo.top/go/mole-intro.html</link><pubDate>Sat, 10 Jan 2026 06:00:00 +0800</pubDate><guid>https://blog.91demo.top/go/mole-intro.html</guid><description>深入解析 Wails v3 框架下的桌面应用开发，探讨如何集成 FRP 内网穿透核心逻辑、实现 Go 与前端的高效交互及多平台打包实践。</description></item><item><title>FRP 图形化管理新方案：基于 Wails 3 的 Mole-go 桌面客户端部署指南</title><link>https://blog.91demo.top/devops/mole-help.html</link><pubDate>Wed, 07 Jan 2026 06:00:00 +0800</pubDate><guid>https://blog.91demo.top/devops/mole-help.html</guid><description>记录自研 FRP 管理工具 Mole-go 的公版部署与使用过程，探讨如何通过 Go + Wails 3 构建极致简单的内网穿透图形化管理体验。</description></item></channel></rss>