MeNav

MeNav - 个人导航站

一个轻量级、高度可定制的个人导航网站
一键部署 自动化构建

License GitHub stars GitHub forks

📋 静态一键部署 | 自动化构建 | 🔖 支持书签导入

MeNav 是一个轻量级、高度可定制的个人导航网站生成器,让您轻松创建属于自己的导航主页。无需数据库和后端服务,完全静态部署,支持一键 Fork 部署到 GitHub Pages还可以从浏览器书签一键导入网站。配合 MarksVault 浏览器扩展,更支持书签自动同步和导航站自动更新。

如果觉得项目有用,欢迎Star/Fork支持谢谢

预览

明亮主题 黑暗主题
明亮主题预览 黑暗主题预览

目录

快速预览

在线访问

功能特点

  • 🎨 简洁美观的界面设计
  • 📱 响应式布局,支持移动端
  • 🌐 集成Google、Bing、百度等外部搜索引擎
  • 🎯 分类展示网站链接
  • 👥 展示社交媒体链接
  • 🧩 模块化配置
  • 📝 支持多个内容页面
  • 📌 支持从浏览器导入书签
  • 📚 支持2-4层级的多层级嵌套书签结构更好地组织内容
  • 🔄MarksVault 浏览器扩展集成,支持自动推送书签
  • 🔄 可部署到GitHub Pages或任何类似的CI/CD服务及任何服务器

近期更新

点击查看/隐藏更新日志

2025/10/18

1. 图标模式默认行为变更

  • 默认启用 icons.mode: favicon,自动根据站点 URL 加载 favicon失败回退为 Font Awesome 图标)
  • 如需关闭外部请求并完全使用手动图标,请在 config/user/site.yml 中设置:
# config/user/site.yml
icons:
  mode: manual  # 关闭 favicon 请求,纯手动图标

隐私说明Favicon API

  • 使用 https://t3.gstatic.com/faviconV2 服务会将站点 URL 发送至第三方Google以获取 favicon 图片
  • 若不希望产生外部网络请求或在内网/离线环境中部署,请设置 icons.mode: manual

2025/10/14

1. 拼音搜索支持

  • 支持中文拼音与首字母匹配检索(基于 pinyin-match

2025/07/30

1. 链接打开行为一致性

  • 统一站点/导航外链为新标签页打开,改善导航体验

2025/07/07

1. UI 细节优化

  • 侧边栏显示与布局细节优化
  • 明暗主题切换按钮样式改进
  • 欢迎文本与布局对齐优化

2025/05/22

1. MeNav 浏览器扩展支持接口

  • 注入序列化的配置数据供扩展读取(configJSON
  • 暴露 window.MeNav 基础能力与 DOM 数据属性,支持元素精准定位与更新
  • 为扩展推送与页面联动打通基础能力

2025/05/16

1. MarksVault 浏览器扩展集成

  • 支持与 MarksVault 浏览器扩展集成
  • 使用扩展自动推送书签文件到 MeNav
  • 自动处理推送的书签文件并更新网站

2025/05/09

1. 搜索引擎集成功能

  • 集成Google、Bing、百度搜索引擎
  • 通过搜索框图标一键切换不同搜索引擎
  • 用户选择保存在本地,下次访问自动应用

2025/05/08

1. Handlebars模板系统重构

  • 使用Handlebars模板引擎重构整个前端生成系统
  • 实现模块化、组件化的模板结构包含layouts、pages和components
  • 改进代码复用,提高可维护性和扩展性
  • 优化HTML生成逻辑提升性能和代码质量

2025/05/04

1. 移除双文件配置支持

  • 完全移除了对双文件配置方法的支持
  • 简化了配置加载逻辑,现在仅支持模块化配置

2025/05/03

1. 侧边栏收回功能

  • 添加侧边栏折叠/展开按钮位于Logo文本右侧
  • 侧边栏平滑折叠/展开过渡

2. 移动端UI优化

  • 修复搜索按钮和侧边栏按钮遮挡问题
  • 点击侧边栏导航项后自动收起侧边栏

2025/05/02

1. 模块化配置

  • 支持将配置拆分为多个文件,便于管理和维护
  • 引入配置目录结构,分离页面配置
  • 保持向后兼容性,同时支持传统配置文件

2025/05/01

1. 页面布局优化

  • 优化了内容区域和侧边栏的间距,确保各种分辨率下内容不会贴近边缘
  • 卡片与边框始终保持合理间距,避免在窄屏设备上与滚动条贴边
  • 调整了搜索结果区域的边距,与常规分类保持样式一致性

2. 网站卡片文本优化

  • 为站点卡片标题添加单行文本截断,过长标题显示省略号
  • 为站点描述添加两行限制和省略号,保持卡片布局整洁
  • 添加卡片悬停提示,方便查看完整信息

3. 移动端显示增强

  • 优化了移动端卡片尺寸,一屏可显示更多网址
  • 图标大小自适应,在小屏幕上更加紧凑
  • 为不同尺寸移动设备768px、480px、400px提供递进式UI优化
  • 减小卡片内边距和元素间距,增加屏幕利用率

4. 书签导入功能

  • 支持从Chrome、Firefox和Edge浏览器导入HTML格式书签
  • 自动处理书签文件,解析文件夹结构和链接
  • 图标处理:默认加载站点 favicon在 manual 模式下保留 Font Awesome 匹配
  • 生成配置文件,无需手动录入即可批量导入网站链接
  • 与GitHub Actions集成全自动化的导入和部署流程

技术栈

  • HTML5 + CSS3
  • JavaScript (原生)
  • Handlebars 模板引擎
  • Google Favicon API + Font Awesome 图标
  • GitHub Pages托管/其他各种CI/CD服务托管

项目结构

menav/
├── assets/           # 静态资源文件
│   ├── style.css     # 样式表
│   └── menav.svg     # 网站图标
├── src/              # 源代码
│   ├── generator.js  # 静态网站生成器
│   ├── bookmark-processor.js # 书签导入处理器
│   └── script.js     # 前端JavaScript脚本
├── templates/        # Handlebars模板目录
│   ├── layouts/      # 布局模板
│   │   └── default.hbs  # 默认布局模板
│   ├── pages/        # 页面模板
│   │   ├── home.hbs     # 首页模板
│   │   ├── projects.hbs # 项目页模板
│   │   └── ...          # 其他页面模板
│   └── components/   # 可复用组件模板
│       ├── navigation.hbs  # 导航组件
│       ├── category.hbs    # 分类组件
│       ├── site-card.hbs   # 站点卡片组件
│       └── ...             # 其他组件
├── dist/             # 生成的静态网站由generator.js生成
├── bookmarks/        # 书签导入目录
├── config/           # 模块化配置目录
│   ├── _default/     # 默认配置
│   │   ├── site.yml  # 网站基本配置(含导航配置)
│   │   └── pages/    # 页面配置
│   │       ├── home.yml
│   │       ├── projects.yml
│   │       ├── articles.yml
│   │       ├── friends.yml
│   │       └── bookmarks.yml
│   └── user/         # 用户自定义配置
│       ├── site.yml  # 用户网站配置(含导航配置)
│       └── pages/    # 用户页面配置

文档导航

快速开始

点击展开

通过以下步骤快速设置您的个人导航站:

  1. 克隆仓库
git clone https://github.com/rbetree/menav.git
cd menav
  1. 安装依赖
# 安装依赖
npm install
  1. 完成配置(见设置配置文件

  2. 导入书签(可选)

    • 将浏览器导出的HTML格式书签文件放入bookmarks目录
    • 运行书签处理命令:
    npm run import-bookmarks
    
    • 若希望生成结果保持确定性(便于版本管理,减少时间戳导致的无意义 diff
    MENAV_BOOKMARKS_DETERMINISTIC=1 npm run import-bookmarks
    
    • 系统会自动将书签转换为配置文件保存到config/user/pages/bookmarks.yml
    • 注意npm run dev命令不会自动处理书签文件,必须先手动运行上述命令
  3. 构建

# 启动开发服务器
npm run dev
# 生成静态HTML文件
npm run build

构建后的文件位于dist目录

  1. 提交前检查(推荐)
# 一键检查(语法检查 + 单元测试 + 构建)
npm run check

(可选)格式化代码:

npm run format

部署方式

快速部署到GitHub Pages

点击展开

第一步:前置设置

  1. Fork仓库:

    • 点击右上角的 Fork 按钮复制此仓库到您的账号
  2. 启用Actions:

    • 进入fork后的仓库
    • 点击顶部的 "Actions" 标签页
    • 点击绿色按钮 "I understand my workflows, go ahead and enable them"
  3. 配置Pages:

    • 进入仓库的 Settings -> Pages
    • 在 "Build and deployment" 部分
    • Source: 选择 "GitHub Actions"

第二步:自定义配置

创建个人配置文件:

  • 重要: 始终创建自己的用户配置文件,不要直接修改默认配置文件
  • 完成配置文件(见设置配置文件
  • 提交您的配置文件到仓库

第三步:等待自动部署

  • GitHub Actions会自动检测您的更改
  • 构建并部署您的网站
  • 部署完成后,您可以在 Settings -> Pages 中找到您的网站地址

重要: Sync fork后需要手动触发工作流:

  • 当您使用GitHub界面上的"Sync fork"按钮同步本仓库的更新后
  • GitHub Actions工作流不会自动运行
  • 您需要手动触发构建流程:
    • 进入 Actions 标签页
    • 选择左侧的 "Build and Deploy" 工作流
    • 点击 "Run workflow" 按钮

部署到服务器

点击展开

如果您想部署到自己的Web服务器只需要以下几个步骤

  1. 构建静态网站:
npm run build
  1. 复制构建结果:

    • 所有生成的静态文件都位于 dist 目录中
    • dist 目录中的所有文件复制到您的Web服务器根目录
  2. 配置Web服务器:

    • 确保服务器配置为提供静态文件
    • 对于Apache: 在网站根目录中已有正确的 .htaccess 文件
    • 对于Nginx: 添加以下配置到您的server块:
server {
    listen 80;
    server_name your-domain.com;
    root /path/to/dist;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }
}
  1. 更新配置:
    • 如果您想在服务器上更新网站只需重复上述步骤1-2
    • 或者设置自动部署流程例如使用GitLab CI/CD或Jenkins

其他CI/CD托管选项

点击展开

除了GitHub Pages外您还可以使用其他各种CI/CD服务部署MeNav

如 Vercel / Netlify / Cloudflare Pages:

  • 连接您的GitHub仓库
  • 设置构建命令为npm run build
  • 设置输出目录为dist

书签转换依赖 GitHub Actions 如果需要使用书签自动推送功能,必须先在 GitHub 仓库中启用 GitHub Actions

部署流程

1. 上传书签 → 2. GitHub Actions 处理 → 3. 使用处理完成的代码在 GitHub Pages 自动部署
                           ↓
          4. 其他 CI/CD 托管平台检测到变化 → 5. 使用处理完成的代码自动部署

无论选择哪种部署方式,请确保创建并使用您自己的配置文件,而不是直接修改默认配置。

设置配置文件

MeNav 使用模块化配置方式,将配置分散到多个 YAML 文件中,更易于管理和维护。

完整说明请直接看:config/README.md(以该文档为准)。

🔔 重要提示: 请务必在config/user/目录下创建并使用您自己的配置文件,不要直接修改默认配置文件,以便后续更新项目时不会丢失您的个性化设置。

在加载配置时遵循以下优先级顺序:

  1. config/user/ (用户配置)(优先级最高)
  2. config/_default/ (默认配置)

注意: 采用完全替换策略,而非合并。系统会选择存在的用户配置,完全忽略默认配置。

最小可用配置(快速指引)

  • 首次使用建议先完整复制 config/_default/config/user/,再按需修改(因为配置采用“完全替换”策略,不会从默认配置补齐缺失项)。
  • 至少需要有 config/user/site.yml(缺失时构建会直接报错退出,避免生成空白站点)。

书签导入功能

MeNav 支持从浏览器导入书签,快速批量添加网站链接;也支持与 MarksVault 扩展集成自动同步。

完整说明请直接看:bookmarks/README.md(以该文档为准)。

常见问题

如何自定义Handlebars模板 模板系统完整说明请见:[`templates/README.md`](templates/README.md)。
导入的书签没有正确显示图标怎么办? 默认启用 favicon 模式:页面会尝试从第三方服务获取站点 favicon若 URL 不是 http/https、站点无 favicon 或网络受限,将自动回退为 Font Awesome 图标。
如何使用MarksVault扩展自动同步书签 MarksVault 扩展集成的完整说明请见:[`bookmarks/README.md`](bookmarks/README.md) 的 “MarksVault 扩展集成” 章节。

Star-History

Star History Chart

Description
MeNav 个人导航站
Readme 5.3 MiB
Languages
JavaScript 65.7%
CSS 24.4%
Handlebars 9.6%
Shell 0.2%
Dockerfile 0.1%