NooMiNav 是一个基于 Cloudflare 生态构建的极简、高颜值云端服务导航门户。它采用 数据与代码解耦 的设计哲学:你的推广链接、敏感配置全部托管于 Cloudflare 环境变量,GitHub 仓库仅保留纯净的展示逻辑。这不仅保护了你的隐私,更让后续维护变得无比轻松。
🌟 "技术应该让生活更美好,而不是更复杂" —— 我们致力于打造一个既美观又实用的导航系统,让每个人都能轻松管理自己的云端资源。
- 🎨 高级视觉体验:原生支持毛玻璃(Glassmorphism)特效,UI 精致,支持自定义背景。
- 🔒 隐私安全:GitHub 仓库不包含任何链接数据,所有配置通过环境变量注入。
- 🛡️ 高可用设计:支持为每个核心服务配置 备用链接 (
backup_url),主线挂了自动切备用。 - 📊 全能数据看板:内置 D1 数据库集成,精准记录 PV、点击时间与来源,新增日度统计、IP追踪等功能。
- 📱 响应式布局:完美适配移动端、平板与桌面端,全新优化的移动端体验。
- ⚡ 双模部署:同时支持 Cloudflare Pages (推荐) 与 Cloudflare Workers。
- 🌙 主题切换:支持亮色/暗色模式自动切换,记住用户偏好。
- 🔍 智能搜索:内置实时搜索功能,快速定位所需资源。
- 🚀 性能优化:动画效果、骨架屏加载、渐进式呈现等性能优化。
- 🔄 本地开发:提供完整的本地测试环境,方便开发调试。
- HTML5:现代网页标准结构
- CSS3:毛玻璃效果、响应式布局、动画效果
- JavaScript:客户端交互、主题切换、搜索功能
- 渐进增强:确保基础功能在各种环境下正常工作
- Cloudflare Workers/Pages:无服务器计算平台
- Cloudflare D1:SQL 数据库服务
- JavaScript (Node.js):服务端逻辑处理
- 环境变量:配置管理,保证代码与数据分离
-- 日志表 (用于后台详情列表)
CREATE TABLE logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
link_id TEXT,
click_time TEXT,
month_key TEXT,
ip_address TEXT DEFAULT 'unknown',
user_agent TEXT DEFAULT 'unknown'
);
-- 统计表 (用于看板总览)
CREATE TABLE stats (
id TEXT PRIMARY KEY,
name TEXT,
type TEXT,
total_clicks INTEGER DEFAULT 0,
year_clicks INTEGER DEFAULT 0,
month_clicks INTEGER DEFAULT 0,
day_clicks INTEGER DEFAULT 0,
last_year TEXT,
last_month TEXT,
last_day TEXT,
last_time TEXT
);此方案集成了 Git 版本管理,更新维护更方便。
点击右上角的 "Fork" 按钮,将仓库复制到你的 GitHub 账户。
- 进入 Cloudflare Dashboard -> Pages -> Create a project -> Connect to Git
- 选择你 Fork 的仓库,点击 Begin setup
- 构建设置:保持默认 (无需构建命令)
- 环境变量:在设置向导中添加以下变量
| 变量名 | 必填 | 说明 | 示例值 |
|---|---|---|---|
admin |
✅ | 后台管理密码 (访问 /admin 用) |
mypassword123 |
LINKS |
✅ | 主导航链接配置 (JSON 字符串) | 见下方模板 |
FRIENDS |
❌ | 友链配置 (JSON 字符串) | 见下方模板 |
TITLE |
❌ | 网站标题 | 我的云端导航 |
SUBTITLE |
❌ | 网站副标题 | 随时畅联 · 优质资源 |
img |
❌ | 自定义背景图 URL | https://example.com/bg.jpg |
- 项目创建完成后,进入项目 Settings -> Functions -> D1 Database Bindings
- 添加变量名
db并绑定你的数据库 - 前往 Deployments 选项卡,手动点击 Create deployment (Retry) 重新部署一次以使数据库生效
适合单文件快速部署。
- 复制仓库根目录下的
worker.js(或者functions/[[path]].js) 的全部代码 - 创建新的 Cloudflare Worker
- 点击 Edit Code,粘贴代码并保存
- 进入 Settings -> Variables:
- 添加文本变量 (
LINKS,admin等) - 添加 D1 Database Binding,变量名为
db
- 添加文本变量 (
注意:
id必须唯一,且尽量使用英文或数字。
[
{
"id": "123",
"name": "示例网站",
"emoji": "🏔️",
"note": "这是一个示例",
"url": "https://主线路地址...",
"backup_url": "https://备用线路地址..."
},
{
"id": "www",
"name": "另一个网站",
"emoji": "🐶",
"note": "性价比之选",
"url": "https://线路地址..."
}
]注意:新版逻辑需要
id字段来记录点击统计。
[
{
"id": "google",
"name": "Google",
"url": "https://www.google.com"
},
{
"id": "blog",
"name": "我的博客",
"url": "https://blog.example.com"
}
]项目包含一个完整的本地测试环境,位于 本地测试专用 文件夹中,提供了完整的 Cloudflare 功能模拟:
- ✅ 完整模拟 Cloudflare Workers 功能
- ✅ 模拟 D1 数据库操作
- ✅ 支持数据持久化
- ✅ 完整的认证和授权机制
- ✅ 主页预览、搜索功能、主题切换等完整功能
-
进入目录
cd 本地测试专用 -
安装依赖 (首次运行)
# Windows install_dependencies.bat # 或手动安装 npm install express
-
启动服务器
# Windows start_local_test.bat # 或手动启动 node local_server_full_cf_simulation.js
-
访问应用
- 访问
http://localhost:8787查看应用 - 访问
http://localhost:8787/admin管理后台 - 默认密码:
test123
- 访问
⚠️ 注意事项:
- 本地测试服务器仅用于开发和测试
- 完整的生产功能需部署到 Cloudflare
- 本地服务器模拟了大部分功能,但与生产环境仍有差异
- 访问主页:
https://你的域名.pages.dev - 访问后台:
https://你的域名.pages.dev/admin - 输入在环境变量中设置的
admin密码
- 实时 PV/UV 统计:精确记录访问量
- 点击热力图:直观显示热门资源
- 详细访问日志:按月查看历史记录
- 今日统计:显示当天点击情况
- 顶部统计面板:综合数据概览
- 月份选择器:灵活切换查看时间
点击右上角的月亮/太阳图标可在亮色/暗色模式间切换,并会记住您的偏好设置。
在主页顶部的搜索框中输入关键词,可以快速筛选导航项目。
- 骨架屏加载:提供流畅的加载体验
- 动画效果:平滑的过渡动画
- 渐进式呈现:内容逐步展现
- 响应式设计:完美适配各类设备
- 集成多个内部系统,便于员工快速访问
- 统一入口,提高工作效率
- 数据统计,了解系统使用情况
- 整合常用网站和工具
- 个性化定制,满足个人需求
- 云端部署,随时随地访问
- 提供精选资源导航
- 友链功能,促进社区交流
- 访问统计,了解用户喜好
- 集成学习资源和工具
- 学生快速找到所需资源
- 管理员监控资源使用情况
- 隐私安全:数据与代码分离,避免泄露风险
- 易维护:通过环境变量配置,无需修改代码
- 高性能:基于 Cloudflare 全球网络,访问速度快
- 成本低:利用免费层级,几乎零成本部署
- 易扩展:模块化设计,便于功能扩展
- 依赖平台:需要 Cloudflare 账户和 D1 数据库
- 功能限制:受无服务器平台限制,复杂功能实现困难
- 数据量限制:D1 数据库有存储和查询限制
- 定制性:部分高级功能需要付费服务支持
- 高级数据分析:更丰富的图表和报表功能
- 用户权限管理:支持多管理员和权限分级
- 导入导出功能:批量管理导航项目
- API 接口:支持第三方应用集成
- 缓存优化:提升访问速度和用户体验
- 移动端 App:原生移动应用开发
- 插件系统:支持第三方功能扩展
- 国际化:多语言支持
- 社交功能:用户评论和评分系统
- 自动化部署:一键部署脚本
- AI 推荐:智能推荐相关资源
- 个人化定制:用户自定义界面和功能
- 区块链集成:去中心化数据存储
- 边缘计算:更高效的分布式处理
系统采用双重数据结构进行统计:
- 日志表:记录每次访问的详细信息
- 统计表:汇总数据,支持快速查询
统计过程分为三个维度:
- 总计:累计所有点击
- 年度:按年统计,跨年重置
- 月度:按月统计,跨月重置
- 日度:按天统计,跨天重置
- 密码保护:后台访问需要密码验证
- Cookie 管理:安全的会话管理
- 输入验证:防止恶意输入和注入攻击
- 访问控制:限制敏感操作权限
- 前端:静态资源由 Cloudflare CDN 分发
- 后端:Worker 运行在边缘节点,就近处理请求
- 数据库:D1 提供 SQL 数据库服务
- 缓存:利用 Cloudflare 全局缓存提升性能
├── functions/ # Cloudflare Pages 核心逻辑
│ └── [[path]].js # 路由、渲染、API 核心代码
├── 本地测试专用/ # 本地开发测试环境
│ ├── data/ # 本地数据库文件
│ ├── local_server_full_cf_simulation.js # 完整 CF 功能模拟
│ ├── package.json # Node.js 依赖配置
│ ├── install_dependencies.bat # 依赖安装脚本
│ ├── start_local_test.bat # 启动测试脚本
│ ├── 使用说明.md # 本地测试说明
│ └── 本地测试的效果(截图)/ # 测试效果截图
├── index.html # 静态入口占位符
├── README.md # 项目文档
├── project_specs.md # 项目规格文档
├── db_structure.md # 数据库结构文档
├── test_cases.md # 测试用例文档
└── LICENSE # Apache 2.0 开源协议
- 实时监控:缺少实时数据推送功能
- 高级分析:缺少用户行为分析和趋势预测
- 多管理员:目前只支持单一管理员
- 权限控制:缺乏细粒度权限管理
- 通知系统:缺少异常通知和提醒功能
- 性能优化:减少数据库查询次数,优化响应时间
- 用户体验:增加更多交互反馈和引导提示
- 错误处理:完善错误捕获和恢复机制
- 文档完善:补充更多使用案例和技术说明
- 测试覆盖:增加单元测试和集成测试
我们欢迎任何形式的贡献! 🌟
- Fork 仓库
- 创建功能分支
- 提交更改
- 发起 Pull Request
- 功能开发:实现新功能或改进现有功能
- 文档完善:补充使用说明和最佳实践
- 问题修复:解决 bug 和性能问题
- 测试优化:增加测试用例和覆盖率
- 用户体验:改善界面和交互体验
遇到问题?需要帮助?随时联系我们! 📧
- Issue:提交问题或建议
- Pull Request:贡献代码改进
- 邮件:[您的邮箱地址]
本项目基于 Apache 2.0 License 开源。
- 允许商业使用、分发、修改
- 需要保留原始版权和许可证声明
- 不提供任何担保,作者不承担任何责任
感谢您选择 NooMiNav!🎉
🌈 "每一个伟大的项目都始于一个勇敢的第一步。希望 NooMiNav 能成为您数字生活的得力助手,让技术真正服务于生活。"
无论您是技术新手还是资深开发者,我们都希望这个项目能够为您提供价值。如果您喜欢这个项目,请给我们一个 ⭐ Star,让更多人看到它!
让我们一起打造更好的开源生态!🚀