要寫這篇文章,起因是一個(gè)小伙伴來求助我,說 React 社區(qū)感覺沒有類似于 VuePress 的文檔站工具或者框架。然后 VuePress 使用起來有感覺沒有那么順手,所以想" />
時(shí)間:2023-08-05 11:15:02 | 來源:網(wǎng)站運(yùn)營
時(shí)間:2023-08-05 11:15:02 來源:網(wǎng)站運(yùn)營
[邊寫邊學(xué)系列] — 超級(jí)好用的文檔站建站框架 Docusaurus:前言Docusaurus
,非常匹配你的要求。哈哈哈,扯犢子了,寫這篇文章的時(shí)候我還不知道這個(gè)單詞到底是啥意思呢,怎么可能給小伙伴推薦,實(shí)際上找尋過程是這樣的:Next.js
或者 Gatsby
來動(dòng)手搭建一個(gè)。主要原因是因?yàn)榇罱ǖ倪^程是一個(gè)知識(shí)的積累過程,但是現(xiàn)在的話其實(shí)會(huì)覺得專業(yè)的事情交給專業(yè)的框架工具去做,開發(fā)者只需要專注做應(yīng)該做的事情效率更高。使用 Docusaurus 之前先來看看有哪些知名文檔站是用它來進(jìn)建站的。npx @docusaurus/init@latest init [名稱] [模板]npx @docusaurus/init@latest init docusaurus-luffyzh-website classic
初始化過后,啟動(dòng)項(xiàng)目,我們來看看效果:docusaurus.config.js
這個(gè)核心配置文件,更改一些網(wǎng)站的基本信息。module.exports = { title: '前端周同學(xué)/'s Blog', tagline: ' 公眾號(hào): 前端周同學(xué)', url: 'https://github.com', baseUrl: '/', onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', organizationName: 'luffyZh', // Usually your GitHub org/user name. projectName: 'docusaurus-luffyzh-website', // Usually your repo name. themeConfig: { navbar: { title: '前端周同學(xué)', logo: { alt: 'My Site Logo', src: 'img/logo.svg', }, items: [ { type: 'doc', docId: 'intro', position: 'left', label: '文檔', }, { position: 'left', to: '/blog', label: '博客', }, { href: 'https://github.com/luffyZh/docusaurus-luffyzh-website', label: 'GitHub', position: 'right', }, ], }, footer: { style: 'dark', links: [ { title: 'Docs', items: [ { label: '文檔', to: '/docs/intro', }, ], }, { title: 'Blog', items: [ { label: '博客', to: '/blog', }, ], }, { title: '更多', items: [ { label: '掘金', href: 'https://juejin.cn/user/96412752681079' }, { label: 'GitHub', href: 'https://github.com/luffzh/docusaurus-luffyzh-website', }, ], }, ], copyright: `Copyright ? ${new Date().getFullYear()} 前端周同學(xué)~`, }, prism: { theme: lightCodeTheme, darkTheme: darkCodeTheme, }, },};
可以看到,我就改了幾個(gè)簡(jiǎn)單的配置文案,內(nèi)容站已經(jīng)十分的有模有樣了,真的是非常簡(jiǎn)便,忍不住繼續(xù)向下探索~
docusaurus-luffyzh-website├── blog // 包含博客的 Markdown 文件。 若您不需要博客,您可刪除此目錄│ ├── 2019-05-28-hola.md│ ├── 2019-05-29-hello-world.md│ └── 2020-05-30-welcome.md├── docs // 包含文檔的 Markdown 文件。 您可在 sidebars.js 中自定義文檔的側(cè)邊欄順序。│ ├── doc1.md│ ├── doc2.md│ ├── doc3.md│ └── mdx.md├── src // 如頁面或自定義 React 組件一類的非文檔文件│ ├── css│ │ └── custom.css│ └── pages // 放在此處的所有文件都將被轉(zhuǎn)換成網(wǎng)站頁面,類似 Next.js。│ ├── styles.module.css│ └── index.js├── static // 靜態(tài)資源│ └── img├── docusaurus.config.js // 站點(diǎn)配置文件├── package.json├── README.md├── sidebars.js // 用于指定側(cè)邊欄中的文檔順序└── yarn.lock
看了一圈下來發(fā)現(xiàn) Docusaurus 的配置以及功能真的是非常的簡(jiǎn)潔并且目的十分明確,就感覺它專門就是為了內(nèi)容站而生的,框架本身只為開發(fā)者開了兩個(gè)口子,一個(gè)是文檔(主要目的之一:文檔站,上面也提到了有那么多的文檔站使用它生成的。),另一個(gè)是博客。上面提到了,這倆功能是有區(qū)別的,那么具體有啥區(qū)別呢?/doc
—— 文檔文件夾.md
文件的同時(shí),還對(duì)下面的子目錄進(jìn)行解析,生成目錄樹結(jié)構(gòu)的側(cè)邊欄,如下圖所示:.md
可以直接進(jìn)行內(nèi)容的書寫,和普通的 Markdown 文檔一模一樣書寫就可以,唯一一點(diǎn)需要注意的就是,可以通過一個(gè)頭部,來進(jìn)行文件在側(cè)邊欄順序的展示:---sidebar_position: 3 // 此篇文檔顯示在第三個(gè)順序---
/blog
—— 博客文件夾.md
文件,但是區(qū)別就是它無法識(shí)別目錄,它生成的側(cè)邊欄順序是根據(jù)文檔名稱來進(jìn)行排序的~如下圖:md
文件文檔頭部,需要按照一定的規(guī)則去匹配識(shí)別,詳細(xì)如下:---slug: first-post // 轉(zhuǎn)化成路由 -> /blog/first-posttitle: First Post // 轉(zhuǎn)化成文檔標(biāo)題author: luffyZh // 轉(zhuǎn)化成文章作者昵稱author_title: 周公子 @掘金 // 轉(zhuǎn)化成作者標(biāo)題author_url: https://github.com/luffyZh // 轉(zhuǎn)化成作者鏈接author_image_url: https://avatars.githubusercontent.com/u/17840558?s=60&v=4 // 轉(zhuǎn)化成頭像tags: [test] // 轉(zhuǎn)化成分類標(biāo)簽---這里直接寫標(biāo)題以外的內(nèi)容。
對(duì)比Gitbook
、VuePress
甚至是語雀和飛書等。相信大家還是想知道,為什么選擇用 Docusaurus 而不是用其他的框架?總要有一個(gè)理由嘛,關(guān)于答案,我們依然可以從官網(wǎng)入手來找找看,讓它自己來告訴我們它自身并不是一個(gè) KPI 框架,而是真正能幫開發(fā)者解決文檔建站痛點(diǎn)問題的。GIT_USER=your_username && yarn deploy
。不過經(jīng)過我的實(shí)踐,因?yàn)槟承﹤}庫某些權(quán)限設(shè)置,所以并不能部署成功,如下圖所示:// build.shGIT_USER=your_github_username GIT_PASS=your_personal_token yarn deploy
關(guān)于 personal token 的生成方法以及可能遇到的問題,這里貼兩個(gè)網(wǎng)站,方便大家排查問題。baseUrl
這個(gè)字段由于 Github Pages 的特殊性我們項(xiàng)目里配置的是 /repo-name/
,但是 Vercel 其實(shí)沒有 Github Pages 的限制,baseUrl
直接是 /
就可以了,所以我們新開一個(gè)分支,feature/vercel
,修改配置后重新部署,回到 Vercel,把部署分支切換成 feature/vercel
,再看看效果:Docusaurus
已經(jīng)幫開發(fā)者做了大量的工作,比如首頁的生成,路徑的配置以及暗黑模式的適配等。那么除了這些功能之外,是否還有其他功能我們沒接觸到到呢?當(dāng)然有而且還有很多,在這里,就簡(jiǎn)單介紹幾個(gè),其他的各位看官可以在自己搭建項(xiàng)目的過程里去摸索探尋~pages
文件夾的文件會(huì)被渲染成路有頁面,所以我們可以使用 React 的開發(fā)模式來對(duì)我們的頁面進(jìn)行擴(kuò)展,甚至出了文檔以外你也可以把它當(dāng)成一個(gè)系統(tǒng)去開發(fā),下面我簡(jiǎn)單的把首頁進(jìn)行了改造,最后的效果如下:Docusaurus
內(nèi)置就支持搜索功能,我們來把他暴露給用戶,方便使用。yarn add @docusaurus/theme-search-algolia
然后去官網(wǎng)申請(qǐng)一下權(quán)限,因?yàn)槊恳粋€(gè)網(wǎng)站需要一個(gè)對(duì)應(yīng)的 apiKey
和 indexName
,官方會(huì)給你發(fā)郵件把兩個(gè)必要內(nèi)容發(fā)給你,這里為了簡(jiǎn)單可用,我使用官方給的 Demo Key 來演示。algolia: { apiKey: '25626fae796133dc1e734c6bcaaeac3c', indexName: 'docsearch',},
配置完過后效果如下圖所示,可以看到還是非常的不錯(cuò)的關(guān)鍵詞:系列,超級(jí)
客戶&案例
營銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。