当前位置:首页 > VUE

用vue实现docsify

2026-01-19 20:34:25VUE

使用 Vue 实现 Docsify 风格的文档网站

Vue 可以结合其他工具实现类似 Docsify 的文档网站功能。Docsify 本身是一个动态生成文档网站的工具,但通过 Vue 和相关插件也能实现类似效果。

安装 Vue 和相关依赖

确保已安装 Node.js 和 npm/yarn。创建一个新的 Vue 项目并安装必要依赖:

vue create vue-docsify
cd vue-docsify
npm install vue-router markdown-it vue-markdown-loader --save-dev

配置 Markdown 支持

vue.config.js 中配置 Webpack 以支持 Markdown 文件:

module.exports = {
  chainWebpack: config => {
    config.module
      .rule('md')
      .test(/\.md$/)
      .use('vue-loader')
      .loader('vue-loader')
      .end()
      .use('vue-markdown-loader')
      .loader('vue-markdown-loader')
      .options({
        raw: true,
        preventExtract: true
      })
  }
}

创建文档结构

src 目录下创建文档结构:

src/
  docs/
    README.md
    guide.md
  components/
    Sidebar.vue
    Navbar.vue

实现路由和布局

修改 src/router/index.js 设置路由:

import Vue from 'vue'
import Router from 'vue-router'
import Home from '../views/Home.vue'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'home',
      component: () => import('../views/Docs.vue'),
      props: { path: 'README' }
    },
    {
      path: '/:doc',
      name: 'doc',
      component: () => import('../views/Docs.vue'),
      props: true
    }
  ]
})

创建文档视图组件

创建 src/views/Docs.vue

<template>
  <div class="docs-container">
    <Sidebar />
    <div class="doc-content">
      <component :is="docComponent" />
    </div>
  </div>
</template>

<script>
import Sidebar from '@/components/Sidebar.vue'

export default {
  components: { Sidebar },
  props: ['path'],
  computed: {
    docComponent() {
      return () => import(`@/docs/${this.path || 'README'}.md`)
    }
  }
}
</script>

实现侧边栏导航

创建 src/components/Sidebar.vue

<template>
  <div class="sidebar">
    <router-link to="/">Home</router-link>
    <router-link to="/guide">Guide</router-link>
  </div>
</template>

<script>
export default {
  name: 'Sidebar'
}
</script>

添加样式

src/App.vue 中添加基本布局样式:

<style>
.docs-container {
  display: flex;
  min-height: 100vh;
}
.sidebar {
  width: 250px;
  padding: 20px;
  background: #f5f5f5;
}
.doc-content {
  flex: 1;
  padding: 20px;
}
</style>

运行项目

启动开发服务器:

npm run serve

高级功能扩展

要实现更接近 Docsify 的功能,可以添加以下扩展:

用vue实现docsify

  • 代码高亮:安装 highlight.js 并配置
  • 主题切换:使用 CSS 变量实现
  • 搜索功能:添加 flexsearchlunr 实现客户端搜索
  • SEO 优化:使用 vue-meta 管理元标签

这种方法利用 Vue 的生态系统实现了 Docsify 的核心功能,同时保留了 Vue 的灵活性和扩展性。相比原版 Docsify,这种实现方式更适合需要深度定制或与其他 Vue 功能集成的项目。

标签: vuedocsify
分享给朋友:

相关文章

vue实现muli

vue实现muli

Vue 实现多语言(i18n)支持 在 Vue 项目中实现多语言(i18n)功能,通常使用 vue-i18n 插件。以下是具体实现步骤: 安装 vue-i18n npm install vue-i…

vue实现图片

vue实现图片

Vue 实现图片功能的方法 静态图片引入 在 Vue 项目中,可以通过 src 属性直接引入静态图片。图片通常放在 public 或 assets 目录下。 <template> &…

vue实现网站

vue实现网站

Vue 实现网站的基本步骤 Vue.js 是一个渐进式 JavaScript 框架,适合构建现代化的单页应用(SPA)或动态网站。以下是使用 Vue 实现网站的基本方法。 初始化 Vue 项目 使用…

vue实现框选

vue实现框选

Vue 实现框选功能 在 Vue 中实现框选功能通常需要监听鼠标事件,计算选区范围,并根据选区范围高亮或选中元素。以下是实现框选功能的关键步骤。 监听鼠标事件 在 Vue 模板中,为容器元素绑定鼠标…

vue实现滑动条

vue实现滑动条

Vue 实现滑动条 在 Vue 中实现滑动条可以通过原生 HTML 的 <input type="range"> 或自定义组件实现。以下是两种常见方法: 使用原生 HTML 滑动条 通过…

vue实现页面定位

vue实现页面定位

Vue 实现页面定位的方法 在 Vue 中实现页面定位通常可以通过以下几种方式完成,包括使用原生 JavaScript 的 scrollIntoView 方法、Vue Router 的滚动行为配置,以…