NuxtBase 帮助开发者引入了 Nuxt 官方提供的@nuxt/content
,并且封装好了完整的渲染和 UI。
能够非常方便的支持你编写文档内容,你可以在content/contents
目录下编写你的文档内容
NuxtBase 封装了<DocMenu/>
组件,会默认的读取/content/docs/
目录下的所有md
文件,然后生成侧边栏文档目录。
如果你的文档具有多级,你的文件夹名称应该使用英文目录名称。然后在[...slug].vue
中,修改pahtMap
变量,将英文目录名称映射成为中文目录名称。
const pathMap = {
start: "快速开始",
tutorial: "教程",
};
文档渲染逻辑是在[...slug].vue
中,文档目录和博客的渲染都是使用的该组件,NuxtBase 会根据isDoc
变量判断这到底是博客渲染还是文档渲染。
Markdown 内容的渲染逻辑是在<ContentDoc/>
组件中
<template>
<!-- 博客 -->
<Layout :hiddenFooter="true" v-if="!isDoc">
<div class="max-w-4xl m-auto mt-4">
<div
class="flex justify-end font-semibold text-gray-800 hover:text-gray-700"
@click="onBack"
>
<ArrowLeftCircleIcon class="w-6 h-6 mr-2" />返回
</div>
<div class="pb-16">
<!-- markdown主体 -->
<div
class="markdown-body max-w-full"
:class="{
'pl-52': isDoc,
}"
>
<ContentDoc>
<template #not-found> <noFound></noFound></template>
</ContentDoc>
</div>
</div>
</div>
</Layout>
<!-- 文档 -->
<div class="flex" v-else>
<!-- 文档目录 -->
<DocMenu :data="menuData" :pathMap="pathMap"></DocMenu>
<div class="markdown-body max-w-full pl-52 pr-9 pb-16">
<ContentDoc>
<template #not-found> <noFound></noFound></template>
</ContentDoc>
</div>
</div>
</template>
如果你对文档渲染的的前端 UI 不满意,你可以修改改组件的逻辑。
NuxtBase 默认提供了一套 markdown 的渲染 css 样式,你可以查看browser/assets/css/markdown.css
。
.markdown-body {
}
如果你对于这个样式不满意,你可以在 Github 上找到你满意的 Markdown 样式,并且替换类名为.markdown-body