用AI为unraid做一个导航页

2025-01-12 22:19:38 1点赞 17收藏 1评论

unraid的导航页千千万,比如:

1:heimdall 作者仓库 lscr.io/linuxserver/heimdall

2:nginx 配合静态页模板 版本太多,自行选择

3:flare 作者仓库 soulteary/flare

4:dashy 作者仓库 Lissy93/dashy

5:homepage 作者仓库 benphelps/homepage

6:Homarr 作者仓库 ghcr.io/ajnart/homarr:latest

但哪有自己打造一个独一无二的过瘾呢,玩Unraid不就是为了折腾么。但界面逻辑、前端后端,html、js,不但得有专业知识还得有时间精力才行。

最近Deepseek很火,最近我尝试用Deekseek从无到有生成了一个导航页,主打一个自己不写一行代码、不改一个参数。

先上功能(功能吹牛也是AI生成的)

这个应用是一个书签管理工具,分为前端和后端两部分。它允许用户管理书签(链接),并将书签分类存储。用户可以通过前端界面添加、编辑、删除书签和分类,并且可以拖拽排序书签和分类。后端负责处理数据的存储、网站信息的获取(如网站标题和图标)以及提供API接口。

应用的主要功能:

  1. 书签管理

    • 用户可以添加、编辑、删除书签。

    • 书签可以分类存储,用户可以创建、编辑、删除分类。

    • 书签和分类可以通过拖拽进行排序。

  2. 网站信息自动获取

    • 当用户添加书签时,系统会自动获取网站的标题和图标。

    • 图标会下载并存储在服务器上,避免重复下载。

  3. 管理模式

    • 用户可以通过输入密码进入管理模式,管理模式允许用户编辑、删除书签和分类。

    • 在管理模式下,用户可以拖拽排序书签和分类。

  4. 数据导入导出

    • 用户可以导出当前的书签数据为JSON文件。

    • 用户可以导入JSON文件来恢复或加载书签数据。

  5. 主题切换

    • 用户可以在浅色和深色主题之间切换。

  6. 时间显示

    • 页面顶部显示当前时间,并每秒更新。

技术栈:

  • 前端

    • 使用 Vue 3 构建用户界面。

    • 使用 Bootstrap 5Font Awesome 进行样式设计和图标展示。

    • 使用 Sortable.js 实现拖拽排序功能。

    • 前端通过API与后端进行数据交互。

  • 后端

    • 使用 Node.jsExpress 框架提供API服务。

    • 使用 Axios 进行HTTP请求,获取网站信息。

    • 使用 Cheerio 解析HTML,提取网站标题和图标。

    • 使用 Node Cache 进行简单的缓存管理。

    • 使用 crypto 模块生成URL的哈希值,用于图标文件的命名。

  • 部署

    • 使用 Nginx 作为反向代理服务器,提供前端静态文件服务和后端API的代理。

    • 使用 Docker 或类似工具进行容器化部署,通过 entrypoint.sh 脚本启动后端服务和Nginx。

文件结构:

  • package.json:定义了项目的依赖和脚本。

  • server.js:后端服务的入口文件,处理API请求、数据存储和网站信息获取。

  • app.js:前端Vue应用的逻辑代码,处理用户交互、数据管理和API调用。

  • index.html:前端页面的HTML结构,包含Vue应用的挂载点和静态资源引用。

  • styles.css:前端页面的样式文件,定义了浅色和深色主题的样式。

  • entrypoint.sh:启动脚本,用于启动后端服务和Nginx。

  • nginx.conf:Nginx配置文件,定义了前端和后端的路由规则。

运行流程:

  1. 用户访问前端页面(通过Nginx提供)。

  2. 前端通过API与后端交互,获取书签数据。

  3. 用户可以在前端添加、编辑、删除书签和分类。

  4. 当用户添加书签时,前端会调用后端API获取网站信息(标题和图标)。

  5. 后端通过Axios和Cheerio获取网站信息,并将图标下载到服务器。

  6. 用户可以通过拖拽排序书签和分类,数据会实时保存到后端。

  7. 用户可以导出书签数据为JSON文件,或导入JSON文件来恢复数据。

安全性:

  • 后端通过环境变量 MANAGEMENT_PASSWORD 来设置管理密码,用户需要输入正确的密码才能进入管理模式。

  • 后端禁用了SSL验证(rejectUnauthorized: false),这在生产环境中可能会带来安全风险,建议在生产环境中启用SSL验证。

总结:

这是一个功能齐全的书签管理工具,适合个人或小团队使用。它提供了友好的用户界面和丰富的功能,如自动获取网站信息、拖拽排序、数据导入导出等。通过前后端分离的设计,应用具有良好的扩展性和维护性。

再上界面:

用AI为unraid做一个导航页

具体生成过程及源码见:https://gitee.com/piaohong1978/AI-Nav


运行容器

使用 docker run 命令运行容器,并指定参数:

docker run -d --name bookmark -p 8080:80 -e MANAGEMENT_PASSWORD=yourpassword -v /mnt/user/appdata/Bookmark:/app/backend/data/ piaohong/bookmark:latest

参数说明:

  • -d:后台运行容器。

  • --name bookmark:为容器命名为 "bookmark"。

  • -p 8080:80:将宿主机的 "8080" 端口映射到容器的 "80" 端口。

  • -e MANAGEMENT_PASSWORD=yourpassword:设置环境变量 "MANAGEMENT_PASSWORD",值为 "yourpassword"(请替换为实际密码)。

  • -v /mnt/user/appdata/Bookmark:/app/backend/data/:将宿主机的 "/mnt/user/appdata/Bookmark" 数据卷挂载到容器的 "/app/backend/data/" 目录。(此项可选)

  • piaohong/bookmark:latest:使用的镜像名称和标签。


作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
1评论

  • 精彩
  • 最新
  • # 用Bootstrap4及Vue2写一个网站导航页面,要求能添加、编辑、删除网址标签,能分类,能在拖拽排序,数据保存在本地

    要使用Bootstrap 4和Vue 2创建一个网站导航页面,并且支持添加、编辑、删除网址标签、分类、拖拽排序以及将数据保存在本地,你可以按照以下步骤进行开发。

    ### 1. 项目结构
    首先,创建一个基本的项目结构。

    ### 2. 引入依赖
    在`index.html`中引入Bootstrap 4和Vue 2的CDN链接。

    ### 3. Vue 2 应用
    在`app.js`中编写Vue应用逻辑。

    ### 4. HTML 结构
    在`index.html`的`#app`容器中添加HTML结构。

    ### 5. 拖拽排序
    为了实现拖拽排序,可以使用`Sortable.js`。

    ### 6. 样式调整
    在`styles.css`中添加一些自定义样式。

    ### 7. 运行项目
    将代码分别保存到`index.html`、`styles.css`和`app.js`文件中,然后在浏览器中打开`index.html`即可看到效果。

    ### 8. 功能说明
    - **添加分类**:在输入框中输入分类名称,点击“Add Category”按钮即可添加新分类。
    - **添加链接**:在分类下的输入框中输入链接名称和URL,选择分类后点击“Add Link”按钮即可添加新链接。
    - **编辑链接**:点击链接右侧的“Edit”按钮,弹出编辑模态框,修改后点击“Update”按钮即可更新链接。
    - **删除链接**:点击链接右侧的“Delete”按钮即可删除链接。
    - **拖拽排序**:可以通过拖拽链接来调整它们的顺序。

    ### 9. 数据保存
    所有数据都会保存在浏览器的`localStorage`中,刷新页面后数据不会丢失。

    ### 10. 进一步优化
    - 可以添加更多的验证和错误处理。
    - 可以优化UI/UX,使其更加美观和易用。
    - 可以添加更多的功能,如搜索、导出数据等。

    通过以上步骤,你可以创建一个功能完善的网站导航页面,并且能够满足你的需求。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

飘鸿1978

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
17
扫一下,分享更方便,购买更轻松