Files
menav/README.md
2025-05-02 03:05:51 +08:00

400 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# <img src="assets/favicon.ico" width="48" style="vertical-align: middle;"> MeNav - 个人导航站
一个个人主页/导航静态网站,自动化构建和部署,帮助你整理和展示你的网络收藏/项目
## 目录
- [在线预览](#在线预览)
- [功能特点](#功能特点)
- [近期更新](#近期更新)
- [技术栈](#技术栈)
- [项目结构](#项目结构)
- [快速开始](#快速开始)
- [部署方式](#部署方式)
- [快速部署到GitHub Pages](#快速部署到github-pages)
- [书签导入功能](#书签导入功能)
- [使用方法](#使用方法)
- [自动化工作流程详解](#自动化工作流程详解)
- [书签配置自定义](#书签配置自定义)
- [模板说明](#模板说明)
- [配置文件结构](#配置文件结构)
- [设置网站字体](#设置网站字体)
- [设置网站图标](#设置网站图标)
- [添加新的网站链接](#添加新的网站链接)
- [贡献](#贡献)
- [许可证](#许可证)
## 在线预览
访问:[https://rbetree.github.io/menav/](https://rbetree.github.io/menav/)
## 功能特点
- 🎨 简洁美观的界面设计
- 📱 响应式布局,支持移动端
- 🔍 实时搜索功能
- 🎯 分类展示网站链接
- 👥 支持展示社交媒体链接
- 📝 支持多个内容页面(首页、项目、文章、友链)
- 📌 支持从浏览器导入书签
## 近期更新
### 2025/05/02
**1. 页面布局优化**
- ✅ 优化了内容区域和侧边栏的间距,确保各种分辨率下内容不会贴近边缘
- ✅ 卡片与边框始终保持合理间距,避免在窄屏设备上与滚动条贴边
- ✅ 调整了搜索结果区域的边距,与常规分类保持样式一致性
**2. 网站卡片文本优化**
- ✅ 为站点卡片标题添加单行文本截断,过长标题显示省略号
- ✅ 为站点描述添加两行限制和省略号,保持卡片布局整洁
- ✅ 添加卡片悬停提示,方便查看完整信息
**3. 移动端显示增强**
- ✅ 优化了移动端卡片尺寸,一屏可显示更多网址
- ✅ 图标大小自适应在小屏幕上更加紧凑从1.8rem减小到1.2-1.5rem
- ✅ 为不同尺寸移动设备768px、480px、400px提供递进式UI优化
- ✅ 减小卡片内边距和元素间距,增加屏幕利用率
**4. 书签导入功能**
- ✅ 支持从Chrome、Firefox和Edge浏览器导入HTML格式书签
- ✅ 自动处理书签文件,解析文件夹结构和链接
- ✅ 智能匹配网站图标根据URL自动分配合适的Font Awesome图标
- ✅ 生成配置文件,无需手动录入即可批量导入网站链接
- ✅ 与GitHub Actions集成全自动化的导入和部署流程
## 技术栈
- HTML5 + CSS3
- JavaScript (原生)
- Font Awesome 图标
- GitHub Pages托管
## 项目结构
```
menav/
├── assets/ # 静态资源文件
│ ├── style.css # 样式表
│ └── favicon.ico # 网站图标
├── src/ # 源代码
│ ├── generator.js # 静态网站生成器
│ └── script.js # 前端JavaScript脚本
├── templates/ # HTML模板
│ └── index.html # HTML骨架模板文件
├── dist/ # 生成的静态网站由generator.js生成
├── bookmarks/ # 书签导入目录
├── config.yml # 默认配置文件
└── config.user.yml # 用户自定义配置文件
```
## 快速开始
1. 克隆仓库
```bash
git clone https://github.com/rbetree/menav.git
cd menav
```
2. 安装依赖
```bash
# 清理旧的依赖(如果需要)
rm -rf node_modules
rm -f package-lock.json
# 安装新的依赖
npm install
```
3. 修改配置
- 复制 `config.yml``config.user.yml`
-`config.user.yml` 中根据你的需求修改网站内容:
- 修改网站基本信息
- 添加/修改导航链接
- 自定义社交媒体链接
- 更新个人项目展示
- 添加友情链接等
4. 本地预览
```bash
npm run dev
```
## 部署方式
### 快速部署到GitHub Pages
#### 第一步:前置设置
1. Fork仓库:
- 点击右上角的 Fork 按钮复制此仓库到您的账号
2. 启用必要功能:
- 进入仓库的 Settings -> General
- 找到 Features 部分
- 勾选 "Issues"
3. 启用Actions:
- 进入fork后的仓库
- 点击顶部的 "Actions" 标签页
- 点击绿色按钮 "I understand my workflows, go ahead and enable them"
4. 配置Pages:
- 进入仓库的 Settings -> Pages
- 在 "Build and deployment" 部分
- Source: 选择 "GitHub Actions"
#### 第二步:自定义配置
1. 创建个人配置文件:
- 复制 `config.yml``config.user.yml`
-`config.user.yml` 中修改配置
- 提交 `config.user.yml` 到您的仓库这样GitHub Actions才能使用您的自定义配置进行构建
2. 修改配置信息:
- 修改网站基本信息
- 添加/修改导航链接
- 自定义社交媒体链接
- 更新个人项目展示
- 添加友情链接等
完成以上步骤后,系统会自动部署您的网站。部署完成后,您可以在 Settings -> Pages 中找到您的网站地址。
> 重要提示: 请务必使用 `config.user.yml` 进行配置,这样在同步上游更新时不会丢失您的个人设置。同时注意不要在配置文件中包含敏感信息,因为它将被提交到公开仓库。
#### 故障排除
如果遇到部署问题:
1. 请确保完成了所有前置设置步骤
2. 检查每个设置页面是否都点击了 Save 按钮
3. 如果修改设置后部署仍然失败:
- 进入 Actions 标签页
- 找到失败的工作流
- 点击 "Re-run all jobs" 重新运行
## 书签导入功能
### 使用方法
1. **从浏览器导出书签**
- 在Chrome中: 打开书签管理器 -> 点击"更多"(三个点) -> 导出书签
- 在Firefox中: 打开书签库 -> 显示所有书签 -> 导入和备份 -> 导出书签为HTML
- 在Edge中: 设置 -> 收藏夹 -> 管理收藏夹 -> 导出为HTML文件
2. **导入书签到MeNav**
- 在项目根目录下创建 `bookmarks` 文件夹(如果不存在)
- 将导出的HTML书签文件放入 `bookmarks` 文件夹
- 提交并推送变更到仓库
- GitHub Actions将自动处理书签文件并生成书签配置
3. **书签处理流程**
- 系统会扫描 `bookmarks` 目录查找最新的HTML书签文件
- 解析书签文件中的链接和文件夹结构
- 自动为书签分配适当的图标
- 生成 `bookmarks.user.yml` 配置文件(而不是直接修改 `bookmarks.yml`
- 处理完成后会自动清空 `bookmarks` 目录(防止重复处理)
- 重新构建并部署网站
4. **注意事项**
- 每次只处理一个书签文件,如有多个文件,系统会选择最新的那个
- 书签导入是构建时的一次性操作,不会在浏览器中保存或同步您的书签
- 如果想要更新书签,可以直接编辑 `bookmarks.user.yml`,或重新导出书签文件并重新导入
- 系统会优先使用 `bookmarks.user.yml`,如果同时存在 `bookmarks.yml`,它们的内容会被合并(用户配置优先)
### 自动化工作流程详解
MeNav使用单一的GitHub Actions工作流处理书签导入与网站部署实现了无缝集成
1. **触发条件**:
- 当您推送任何更改到主分支(特别是向 `bookmarks` 目录添加HTML文件
- 手动触发工作流时
2. **书签处理步骤**:
- 自动检测 `bookmarks` 目录中的HTML文件
- 使用 `bookmark-processor.js` 脚本处理书签文件
- 生成/更新 `bookmarks.user.yml` 配置文件
- 提交更改(如有)并保存至仓库
- 自动清理已处理的HTML书签文件
3. **网站构建与部署**:
- 基于最新的配置(包括新生成的书签配置)构建网站
- 自动将构建结果部署到GitHub Pages
4. **故障排除**:
- 如果书签未正确显示请检查导出的HTML文件格式是否标准
- 可以通过GitHub Actions日志查看处理过程中的详细信息
- 确保书签文件是有效的HTML格式且包含正确的书签数据结构
### 书签配置自定义
处理后生成的 `bookmarks.user.yml` 文件可以手动编辑以进一步自定义:
```yaml
# 自动生成的书签配置示例(用户自定义版本)
title: 我的书签
subtitle: 从浏览器导入的书签收藏
categories:
- name: 开发工具
icon: fas fa-folder
sites:
- name: GitHub
url: https://github.com
icon: fab fa-github
description: "从书签导入: GitHub"
# 更多网站...
# 更多分类...
```
您可以:
- 修改分类和网站的名称和描述
- 调整图标使用Font Awesome图标类
- 重新组织书签分类结构
- 添加或删除特定书签
**提示**:
- 尽管自动处理会清理原始HTML文件但修改后的 `bookmarks.user.yml` 会被保留,您可以随时手动编辑它来更新书签内容
- 如果项目中同时存在 `bookmarks.yml``bookmarks.user.yml`,系统会合并两者的内容,以 `bookmarks.user.yml` 中的配置为优先
- 这种设计允许您在更新源仓库时保留自己的书签配置
### 模板说明
本项目使用模板与配置文件分离的方式生成网站:
1. `templates/index.html` 是不包含具体内容的HTML骨架模板:
- 使用占位符 (如 `{{SITE_TITLE}}`, `{{NAVIGATION}}`, `{{HOME_CONTENT}}`) 标记动态内容的位置
- 只包含页面结构、CSS引用和基本Javascript引用
2. 工作原理:
- `generator.js` 读取配置文件 (优先使用 `config.user.yml`)
- 将配置内容注入到模板中的占位符位置
- 生成最终的静态HTML网站
3. 优点:
- 清晰分离结构与内容
- 用户只需修改配置文件,不需要编辑HTML
- 便于更新与维护
### 配置文件结构
`config.user.yml` 应包含以下主要部分:
```yaml
# 网站基本信息
site:
title: 网站标题
description: 网站描述
author: 作者名
favicon: favicon.ico # 网站图标,支持ico、png等格式
# 字体设置
fonts:
title: # 标题字体
family: 字体名称 # 可以是Web安全字体或Google Fonts
weight: 字重值 # 如400、500、600等
source: 字体来源 # "google"或"system"
subtitle: # 副标题字体
family: 字体名称
weight: 字重值
source: 字体来源
body: # 正文字体
family: 字体名称
weight: 字重值
source: 字体来源
# 个人信息
profile:
title: 欢迎语
subtitle: 副标题
description: 描述
# 导航菜单
navigation:
- name: 菜单名称
icon: 图标类名
id: 页面ID
active: 是否激活
# 更多配置...
```
### 设置网站字体
1. 字体配置选项:
- `family`: 字体名称支持Web安全字体或Google Fonts
- `weight`: 字体粗细常用值如400(常规)、500(中等)、600(粗体)等
- `source`: 字体来源,可选"google"或"system"
2. 字体分类:
- `title`: 标题字体,用于大标题
- `subtitle`: 副标题字体,用于副标题
- `body`: 正文字体,用于普通文本
3. 使用Google字体示例:
```yaml
fonts:
body:
family: "Noto Sans SC" # Google提供的中文字体
weight: 400
source: "google"
```
4. 使用系统字体示例:
```yaml
fonts:
body:
family: "Segoe UI, system-ui, -apple-system, sans-serif"
weight: 400
source: "system"
```
### 设置网站图标
1. 准备图标文件:
- 支持.ico、.png等格式
- 建议尺寸为32x32或16x16像素
- 将图标文件放在assets目录下
- 例如: `assets/favicon.ico``assets/favicon.png`
2. 配置图标:
-`config.yml``config.user.yml`的site部分设置favicon
- 使用相对于仓库根目录的路径
- 例如: `favicon: favicon.ico`generator会自动从assets目录查找
- 也可以使用在线图标URL
3. 生成和部署:
- 运行 `npm run generate` 时会自动复制图标文件到dist目录
- 确保图标文件存在于assets目录中
- 部署后图标会自动显示在浏览器标签页
> 提示: 如果图标没有显示,请检查:
> 1. 图标文件是否存在于assets目录
> 2. 配置文件中的路径是否正确
> 3. 是否重新运行了生成命令
### 添加新的网站链接
`config.user.yml` 中相应的分类下添加新站点:
```yaml
categories:
- name: 分类名称
icon: 分类图标
sites:
- name: 网站名称
url: 网站地址
icon: 网站图标
description: 网站描述
```
## 贡献
欢迎提交 Issue 和 Pull Request 来帮助改进这个项目。
## 许可证
MIT License