优化结构,地图添加照片

This commit is contained in:
DelLevin-Home
2026-01-30 20:13:27 +08:00
parent 0c62a7982e
commit aa997dd772
25 changed files with 744 additions and 1521 deletions

View File

@@ -1,47 +1,212 @@
// ========== 工具配置数据 ==========
// 将工具数据集中管理
// ========== 工具配置数据 (包含中英双语) ==========
// 将工具数据集中管理,每个工具项包含中英文描述
const toolsData = [
{ name: "Rolan", desc: "应用启动器,从大学用到现在" },
{ name: "Chrome", desc: "确实好用,正在向着屎迈进" },
{ name: "VS Code", desc: "代码编辑器,轻量?高效!" },
{ name: "IntelliJ IDEA", desc: "JAVA代码编辑器" },
{ name: "PyCharm", desc: "python代码编辑器" },
{ name: "Android Studio", desc: "安卓软件开发,一直在学(新建文件夹)" },
{ name: "HbuilderX", desc: "写小程序真心不错vue+js很棒减少了学习压力" },
{ name: "Navicate", desc: "链接mysql的神器sqlyog是谁真不熟。" },
{ name: "Xshell", desc: "链接服务器简单易用配合xftp很好用" },
{ name: "Postman", desc: "API测试与调试工具" },
{ name: "VMware", desc: "虚拟机管理,工具有毒?先拿这个试试" },
{ name: "PhotoShop", desc: "ps图片专用蒙版套索十分好用" },
{ name: "Obsidian", desc: "知识管理,双链接笔记。本地笔记爱好者的福音。" },
{ name: "Typora", desc: "Markdown编辑器简洁美观。" },
{ name: "Docker", desc: "容器化部署一个docker-compose走天下" },
{ name: "Premiere Pro", desc: "剪辑视频调音做简单的效果,简单易用" },
{ name: "After Effects", desc: "特效制作神器就是对显卡和cpu比较不友好" },
{ name: "CheatEngine", desc: "风灵月影没出来就用它亦是内存hook的极佳选择" },
{ name: "x64dbg", desc: "孩子你想掌握逆向之力嘛先从x64dbg开始吧" },
{ name: "WireGuard", desc: "组网神器去你妹的向日葵去你妹的todesk" },
{ name: "Syncthing", desc: "文件同步,超级好用,同步笔记的不错选择。" },
{ name: "NeatReader", desc: "看书软件有点后悔花了188买了永久" },
{ name: "Corel VideoStudio", desc: "万恶的苏州思杰马克丁!还我会声会影" },
{
name: "网易云音乐",
desc: "每天听每天用尊贵的年费vip+版权破解Unblock Netease",
name_zh: "Rolan",
desc_zh: "应用启动器,从大学用到现在",
name_en: "Rolan",
desc_en: "Application launcher, used since college.",
},
{
name: "喜马拉雅听书",
desc: "每天听,每天用。三体,穷鬼的上下两千年等优秀书籍",
name_zh: "Chrome",
desc_zh: "确实好用,正在向着屎迈进",
name_en: "Chrome",
desc_en: "Truly useful, but seems to be heading towards bloat.",
},
{ name: "一本日记", desc: "正经人谁写日记啊!" },
{ name: "Ollama", desc: "本地部署对话AI微调模型32b是4070遭不住" },
{ name: "AnythingLLM", desc: "AI知识库的极佳选择比我自己微调+向量化好" },
{ name: "UVR5", desc: "处理音频的神器,想当年苦逼的分离音频算什么!" },
{ name: "Remote Desktop Manager", desc: "超级强大的远控软件" },
{
name: "SyncClipboard",
desc: "剪切板同步,好用,爱用。再也不用微信消息复制粘贴了",
name_zh: "VS Code",
desc_zh: "代码编辑器,轻量?高效!",
name_en: "VS Code",
desc_en: "Code editor, Lightweight? Efficient!",
},
{
name_zh: "IntelliJ IDEA",
desc_zh: "JAVA代码编辑器我拿来吃饭的东西",
name_en: "IntelliJ IDEA",
desc_en: "JAVA Code Editor",
},
{
name_zh: "PyCharm",
desc_zh: "python代码编辑器偷懒专用",
name_en: "PyCharm",
desc_en: "Python Code Editor",
},
{
name_zh: "Android Studio",
desc_zh: "安卓软件开发,一直在学(新建文件夹)",
name_en: "Android Studio",
desc_en: "Android app development, always learning (Creating new folders).",
},
{
name_zh: "HbuilderX",
desc_zh: "写小程序真心不错vue+js很棒减少了学习压力",
name_en: "HbuilderX",
desc_en:
"Great for writing mini-programs, Vue+JS is awesome! Reduces learning pressure.",
},
{
name_zh: "Navicate",
desc_zh: "链接mysql的神器sqlyog是谁真不熟。",
name_en: "Navicat",
desc_en:
"A powerful tool for connecting to MySQL. Who is SQLyog? Never heard of it.",
},
{
name_zh: "Xshell",
desc_zh: "链接服务器简单易用配合xftp很好用",
name_en: "Xshell",
desc_en:
"Simple and easy-to-use for connecting to servers, works well with Xftp.",
},
{
name_zh: "Postman",
desc_zh: "API测试与调试工具",
name_en: "Postman",
desc_en: "API Testing and Debugging Tool",
},
{
name_zh: "VMware",
desc_zh: "虚拟机管理,工具有毒?先拿这个试试",
name_en: "VMware",
desc_en: "Virtual Machine Management. Is the tool toxic? Try this first.",
},
{
name_zh: "PhotoShop",
desc_zh: "ps图片专用蒙版套索十分好用",
name_en: "Photoshop",
desc_en: "PS, dedicated to image editing. Masks and Lasso are super handy.",
},
{
name_zh: "Obsidian",
desc_zh: "知识管理,双链接笔记。本地笔记爱好者的福音。",
name_en: "Obsidian",
desc_en:
"Knowledge management, bidirectional linking notes. A blessing for local note enthusiasts.",
},
{
name_zh: "Typora",
desc_zh: "Markdown编辑器简洁美观。",
name_en: "Typora",
desc_en: "Markdown editor, simple and beautiful.",
},
{
name_zh: "Docker",
desc_zh: "容器化部署一个docker-compose走天下",
name_en: "Docker",
desc_en: "Containerized deployment, docker-compose handles everything.",
},
{
name_zh: "Premiere Pro",
desc_zh: "剪辑视频调音做简单的效果,简单易用",
name_en: "Premiere Pro",
desc_en: "Video editing, audio adjustment, simple effects, easy to use.",
},
{
name_zh: "After Effects",
desc_zh: "特效制作神器就是对显卡和cpu比较不友好",
name_en: "After Effects",
desc_en:
"Special effects creation powerhouse, just not very GPU/CPU friendly.",
},
{
name_zh: "CheatEngine",
desc_zh: "风灵月影没出来就用它亦是内存hook的极佳选择",
name_en: "Cheat Engine",
desc_en:
"Used it before Fenglingyueying came out, also an excellent choice for memory hooking.",
},
{
name_zh: "x64dbg",
desc_zh: "孩子你想掌握逆向之力嘛先从x64dbg开始吧",
name_en: "x64dbg",
desc_en: "Kid! Want to master reverse engineering? Start with x64dbg!",
},
{
name_zh: "WireGuard",
desc_zh: "组网神器去你妹的向日葵去你妹的todesk",
name_en: "WireGuard",
desc_en: "The best networking tool, forget Sunlogin and Todesk.",
},
{
name_zh: "Syncthing",
desc_zh: "文件同步,超级好用,同步笔记的不错选择。",
name_en: "Syncthing",
desc_en:
"File synchronization, super useful, a great choice for syncing notes.",
},
{
name_zh: "NeatReader",
desc_zh: "看书软件有点后悔花了188买了永久",
name_en: "NeatReader",
desc_en:
"E-book reading software, kind of regret spending 188 for lifetime access.",
},
{
name_zh: "Corel VideoStudio",
desc_zh: "万恶的苏州思杰马克丁!还我会声会影",
name_en: "Corel VideoStudio",
desc_en: "Curse you, Suzhou CorelMarkding! Give me back Pinnacle Studio.",
},
{
name_zh: "网易云音乐",
desc_zh: "每天听每天用尊贵的年费vip+版权破解Unblock Netease",
name_en: "Netease Cloud Music",
desc_en:
"Listen and use daily. Premium annual VIP + copyright unlock (Unblock Netease).",
},
{
name_zh: "喜马拉雅听书",
desc_zh: "每天听,每天用。三体,穷鬼的上下两千年等优秀书籍",
name_en: "Ximalaya Audiobooks",
desc_en:
"Listen and use daily. Great books like 'The Three-Body Problem', 'Poor Man's Two Millennia', etc.",
},
{
name_zh: "一本日记",
desc_zh: "正经人谁写日记啊!",
name_en: "A Diary",
desc_en: "Who writes a diary, seriously?!",
},
{
name_zh: "Ollama",
desc_zh: "本地部署对话AI微调模型32b是4070遭不住",
name_en: "Ollama",
desc_en:
"Locally deployed conversational AI, fine-tuning models. 32b is too much for a 4070.",
},
{
name_zh: "AnythingLLM",
desc_zh: "AI知识库的极佳选择比我自己微调+向量化好",
name_en: "AnythingLLM",
desc_en:
"An excellent choice for an AI knowledge base, better than my own fine-tuning + vectorization.",
},
{
name_zh: "UVR5",
desc_zh: "处理音频的神器,想当年苦逼的分离音频算什么!",
name_en: "UVR5",
desc_en:
"A good tool for processing audio. What were those tough days of manually separating audio!",
},
{
name_zh: "Remote Desktop Manager",
desc_zh: "超级强大的远控软件",
name_en: "Remote Desktop Manager",
desc_en: "Super powerful remote control software.",
},
{
name_zh: "SyncClipboard",
desc_zh: "剪切板同步,好用,爱用。再也不用微信消息复制粘贴了",
name_en: "SyncClipboard",
desc_en:
"Clipboard sync, good and loved. No more copying/pasting via WeChat messages.",
},
{
name_zh: "QtScrcpy",
desc_zh: "局域网控制手机神器远程adb牛逼",
name_en: "QtScrcpy",
desc_en: "LAN phone control tool, remote adb is awesome.",
},
{ name: "QtScrcpy", desc: "局域网控制手机神器远程adb牛逼" },
];
// ========== 渲染工具列表的函数 ==========
@@ -52,27 +217,33 @@ function renderTools(toolsArray) {
return;
}
if (!toolsArray || toolsArray.length === 0) {
container.innerHTML =
'<div class="memo-error" data-i18n="no_tools_data">暂无工具数据</div>'; // 可选:无数据提示
const arrayToRender = toolsArray || toolsData;
if (!arrayToRender || !Array.isArray(arrayToRender) || arrayToRender.length === 0) {
const currentLang = localStorage.getItem(LANG_KEY) || "zh";
let noDataMessage = currentLang === 'en' ? 'No tools data available.' : '暂无工具数据';
container.innerHTML = `<div class="memo-error">${noDataMessage}</div>`;
return;
}
const currentLang = localStorage.getItem(LANG_KEY) || "zh";
let html = "";
toolsArray.forEach((tool, index) => {
const nameKey = `tool_name_${index}`;
const descKey = `tool_desc_${index}`;
const nameTranslation = translations[currentLang][nameKey] || tool.name; // 如果没有翻译,则回退到原始数据
const descTranslation = translations[currentLang][descKey] || tool.desc;
toolsArray.forEach((tool) => {
const name = currentLang === "en" ? tool.name_en : tool.name_zh;
const desc = currentLang === "en" ? tool.desc_en : tool.desc_zh;
html += `
<div class="tool-item">
<div class="tool-name">${nameTranslation}</div>
<div class="tool-desc">${descTranslation}</div>
</div>
`;
<div class="tool-item">
<div class="tool-name">${name}</div>
<div class="tool-desc">${desc}</div>
</div>
`;
});
container.innerHTML = html;
}
// 如果需要在页面加载后自动渲染,可以取消下面的注释
// document.addEventListener('DOMContentLoaded', function() {
// renderTools();
// });