Vue 项目集成 Docsify 使用说明
操作步骤
1. 创建新的 Vue 页面承载 Docsify 模块
- 在
src/views/frontend/
下创建DocsifyPage.vue
- 用于 iframe 嵌入 Docsify 文档系统
2. 在 public 目录创建 Docsify 入口文件
public/
└── docs/
├── index.html
├── README.md
├── _sidebar.md
├── _navbar.md
├── _coverpage.md
├── guide/
├── api/
├── components/
└── deploy/
3. 创建 README、侧栏、头部导航页面
📄 README.md
文档首页内容
📄 _sidebar.md
侧边栏导航
📄 _navbar.md
顶部导航栏
📄 _coverpage.md
封面页面(可不添加)
⚙️ 集成方案
方案一:iframe 嵌入(推荐)
简单、安全、与 Vue 主应用独立,避免依赖冲突。
DocsifyPage.vue 示例:
<!--
文档管理
功能:文档手册
作者:自美新网
更新时间:2025-07-01
-->
<template>
<div class="docsify-page-container">
<div class="docsify-wrapper">
<iframe
ref="docsifyFrame"
src="/docs/"
class="docsify-iframe"
frameborder="0"
scrolling="auto"
@load="onIframeLoad">
</iframe>
</div>
<!-- 加载状态 -->
<div v-if="loading" class="loading-overlay">
<div class="loading-spinner">
<div class="spinner"></div>
<p>正在加载文档...</p>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'DocsifyPage',
data() {
return {
loading: true
}
},
mounted() {
console.log('Docsify page mounted');
// 设置超时,防止加载过久
setTimeout(() => {
if (this.loading) {
this.loading = false;
}
}, 5000);
},
methods: {
// 文档加载完成
onIframeLoad() {
this.loading = false;
console.log('Docsify iframe loaded successfully');
},
// 刷新文档
refreshDocs() {
// 检查iframe引用是否存在
if (this.$refs.docsifyFrame) {
// 显示加载状态
this.loading = true;
// 保存当前iframe的src地址
const currentSrc = this.$refs.docsifyFrame.src;
// 清空src以触发重新加载
this.$refs.docsifyFrame.src = '';
// 在下一个DOM更新周期中恢复src,实现刷新效果
this.$nextTick(() => {
this.$refs.docsifyFrame.src = currentSrc;
});
}
}
}
}
</script>
<style scoped>
.docsify-page-container {
width: 100%;
height: calc(100vh - 116px);
display: flex;
flex-direction: column;
background-color: #f8f9fa;
}
.docsify-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 2rem;
text-align: center;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
.page-title {
font-size: 2.5rem;
font-weight: 700;
margin: 0 0 0.5rem 0;
text-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
.page-description {
font-size: 1.1rem;
margin: 0;
opacity: 0.9;
}
.docsify-wrapper {
flex: 1;
position: relative;
overflow: hidden;
}
.docsify-iframe {
width: 100%;
height: 100%;
border: none;
background-color: white;
}
.loading-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(255, 255, 255, 0.9);
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
}
.loading-spinner {
text-align: center;
color: #667eea;
}
.spinner {
width: 50px;
height: 50px;
border: 4px solid #f3f3f3;
border-top: 4px solid #667eea;
border-radius: 50%;
animation: spin 1s linear infinite;
margin: 0 auto 1rem auto;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* 响应式设计 */
@media (max-width: 768px) {
.docsify-header {
padding: 1.5rem 1rem;
}
.page-title {
font-size: 2rem;
}
.page-description {
font-size: 1rem;
}
}
</style>
方案二:Vue 直接集成 Docsify
如果需要在 Vue 中动态加载 Docsify,可使用动态 script + window.$docsify 配置,但复杂度高,推荐 iframe 方式。
Docsify 目录配置
index.html 配置示例
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>文档手册 - 自美新网</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="自美新网技术文档与使用指南">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">
<style>
/* 自定义样式(设置主题) */
:root {
--theme-color: #667eea;
--theme-color-secondary: #764ba2;
}
/* 移动端优化 */
@media screen and (max-width: 768px) {
.github-corner {
display: none;
}
}
</style>
</head>
<body>
<div id="app">加载中...</div>
<script>
window.$docsify = {
name: '文档手册',
repo: '', // 如果有 GitHub 仓库,可以填写
loadSidebar: true, // 加载侧边栏
loadNavbar: true, // 加载导航栏
subMaxLevel: 3, // 侧边栏最大层级
auto2top: true, // 切换页面后自动跳转到页面顶部
coverpage: false, // 启用封面页
onlyCover: false, // 不仅显示封面页
// 搜索配置
search: {
maxAge: 86400000, // 过期时间,单位毫秒,默认一天
paths: 'auto',
placeholder: '搜索文档...',
noData: '未找到相关内容',
depth: 3,
hideOtherSidebarContent: false
},
// 分页导航
pagination: {
previousText: '上一页',
nextText: '下一页',
crossChapter: true,
crossChapterText: true
},
// 代码复制
copyCode: {
buttonText: '复制',
errorText: '复制失败',
successText: '已复制'
},
// 字数统计
count: {
countable: true,
fontsize: '0.9em',
color: 'rgb(90,90,90)',
language: 'chinese'
},
// 外链配置
externalLinkTarget: '_blank'
}
</script>
<!-- Docsify 核心 -->
<script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
<!-- 插件 -->
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code@2"></script>
<script src="//cdn.jsdelivr.net/npm/docsify-count/dist/countable.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify-pagination/dist/docsify-pagination.min.js"></script>
<!-- 代码高亮 -->
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-bash.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-javascript.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-css.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-json.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-vue.min.js"></script>
</body>
</html>
设置“首页、侧边栏导航、顶部导航、封面(建议去掉)”
README.md / _sidebar.md / _navbar.md / _coverpage.md
README.md
# 欢迎使用文档手册
> 自美新网技术文档与使用指南
## 📚 文档简介
这里是自美新网的技术文档中心,包含了项目的使用指南、API 文档、开发规范等内容。
## 🚀 快速开始
- [安装指南](guide/installation.md)
- [快速上手](guide/quickstart.md)
- [配置说明](guide/configuration.md)
## 📖 主要内容
### 用户指南
- 基础功能介绍
- 高级功能使用
- 常见问题解答
### 开发文档
- API 接口文档
- 组件使用说明
- 开发规范
### 部署运维
- 环境配置
- 部署流程
- 监控告警
## 🔗 相关链接
- [项目主页](#)
- [GitHub 仓库](#)
- [问题反馈](#)
---
**更新时间:** 2025-01-01
**版本:** v1.0.0
_sidebar.md
<!-- docs/_sidebar.md -->
* [首页](/)
* 用户指南
* [安装指南](guide/installation.md)
* [快速上手](guide/quickstart.md)
* [配置说明](guide/configuration.md)
* API 文档
* [用户接口](api/user.md)
* [数据接口](api/data.md)
* [文件接口](api/file.md)
* 组件文档
* [基础组件](components/basic.md)
* [表单组件](components/form.md)
* [展示组件](components/display.md)
* 开发指南
* [开发环境](dev/environment.md)
* [代码规范](dev/standards.md)
* [测试指南](dev/testing.md)
* 部署运维
* [环境配置](deploy/environment.md)
* [部署流程](deploy/process.md)
* [监控告警](deploy/monitoring.md)
* [更新日志](changelog.md)
* [常见问题](faq.md)
_navbar.md
<!-- docs/_navbar.md -->
* 入门
* [快速上手](guide/quickstart.md)
* [安装指南](guide/installation.md)
* 配置
* [基础配置](guide/configuration.md)
* [高级配置](guide/advanced.md)
* [API](api/)
* [组件](components/)
* [更新日志](changelog.md)
_coverpage.md(封面页)
<!-- docs/_coverpage.md -->

# 自美新网 <small>1.0.0</small>
> 技术文档与使用指南
- 📚 完整的功能文档
- 🚀 简单易用的接口
- 💡 丰富的示例代码
- 🎨 优雅的界面设计
[GitHub](https://github.com/)
[开始阅读](README.md)
<!-- 背景色 -->

其他
访问方式:
在 Vue 路由中访问/docsify
页面
文档内容通过iframe
加载/docs/
路径添加文档内容:
在对应目录下创建.md
文件
更新_sidebar.md
中的导航链接自定义配置:
修改index.html
中的window.$docsify
配置
调整 CSS 样式和主题颜色