原 Electron 版在这台 Windows 机器上无法启动(0x80000003 崩在 V8 初始化), 整个业务逻辑用 Go 重写,前端界面与协议结论完全保留。 - internal/eh: 协议核心,画廊页分页 -> /s/ -> hath 直链 -> 下载 - internal/core: 并发引擎 / 状态存储 / 目录模板 / 油猴桥口 - app.go: Wails 绑定层,替代 Electron IPC - frontend/js/api.js: 适配层,renderer.js 一行未改 - 37 个测试,含 httptest 模拟 EH 的端到端链路验证 相比 Electron 版:90MB -> 12.4MB,180MB 内存 -> 27MB,构建 90s -> 2s。 顺带修掉原版代理探测的 bug(永远返回第一个端口,从不等连接结果)。
30 lines
986 B
JavaScript
30 lines
986 B
JavaScript
// 前端「构建」:这个项目没有框架和打包步骤,纯静态文件直接拷贝即可。
|
|
// 保留这个脚本是为了满足 wails.json 里的 frontend:build 约定,
|
|
// 顺便做一件 Wails 要求的事:把非 wailsjs 的资源同步到 dist/。
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const FRONTEND = __dirname;
|
|
const DIST = path.join(FRONTEND, 'dist');
|
|
|
|
// 需要原样拷贝的入口文件与目录
|
|
const ENTRIES = ['index.html', 'css', 'js'];
|
|
|
|
function copy() {
|
|
fs.mkdirSync(DIST, { recursive: true });
|
|
for (const name of ENTRIES) {
|
|
const src = path.join(FRONTEND, name);
|
|
if (!fs.existsSync(src)) continue;
|
|
fs.cpSync(src, path.join(DIST, name), { recursive: true });
|
|
}
|
|
// wailsjs 是 wails build 自动生成的绑定,保留
|
|
console.log('[frontend] 资源已同步到 dist/');
|
|
}
|
|
|
|
copy();
|
|
|
|
if (process.argv.includes('--watch')) {
|
|
console.log('[frontend] watch 模式:改动 src 后重新运行 wails dev 即可');
|
|
}
|