mirror of
https://github.com/zopiya/blog.git
synced 2025-11-03 20:16:47 +08:00
124 lines
23 KiB
HTML
124 lines
23 KiB
HTML
<!doctype html><html lang=zh dir=ltr><head><meta charset=utf-8><meta name=viewport content="width=device-width"><link rel=icon type=image/png href=https://zopiya.com/favicon-96x96.png sizes=96x96><link rel=icon type=image/svg+xml href=https://zopiya.com/favicon.svg><link rel="shortcut icon" href=https://zopiya.com/favicon.ico><link rel=apple-touch-icon sizes=180x180 href=https://zopiya.com/apple-touch-icon.png><meta name=apple-mobile-web-app-title content="仲平"><link rel=manifest href=https://zopiya.com/site.webmanifest><link rel=“icon” type=“image/png” href=“/favicon-96x96.png” sizes=“96x96”><link rel=“icon” type=“image/svg+xml” href=“/favicon.svg”><link rel=“快捷方式图标” href=“/favicon.ico”><link rel=“apple-touch-icon” sizes=“180x180” href=“/apple-touch-icon.png”><meta name=“apple-mobile-web-app-title” content=“仲平”><link rel=“manifest” href=“/site.webmanifest”><meta name=description content="如何使用 Docusaurus 搭建个人知识库网站。"><title>Docusaurus 搭建 | 仲平
|
||
</title><link rel=canonical href=https://zopiya.com/docusaurus-%E6%90%AD%E5%BB%BA/><meta property="og:url" content="https://zopiya.com/docusaurus-%E6%90%AD%E5%BB%BA/"><meta property="og:site_name" content="仲平"><meta property="og:title" content="Docusaurus 搭建"><meta property="og:description" content="如何使用 Docusaurus 搭建个人知识库网站。"><meta property="og:locale" content="zh"><meta property="og:type" content="article"><meta property="article:section" content="posts"><meta property="article:published_time" content="2023-06-28T00:00:00+00:00"><meta property="article:modified_time" content="2023-06-28T00:00:00+00:00"><meta property="article:tag" content="Project/数字文具盒"><meta property="article:tag" content="Blog/开源"><meta property="article:tag" content="Personal/Blog"><link rel=stylesheet href=https://zopiya.com/assets/combined.min.f1aee465a086a02027fd0b1fb97eaf7863c90d434ec462272e1849cc875f12cc.css media=all><script async defer data-website-id=91fd7346-f191-4484-943c-f6884fb2ab07 src=https://umami.7wate.org/script.js></script></head><body class=auto><div class=content><header><div class=header></div></header><main class=main><div class=breadcrumbs><a href=https://zopiya.com/>首页</a><span class=breadcrumbs-separator>/</span><a href=https://zopiya.com/posts/>文辑</a><span class=breadcrumbs-separator>/</span>
|
||
<a href=https://zopiya.com/docusaurus-%E6%90%AD%E5%BB%BA/>Docusaurus 搭建</a></div><div><div class=single-intro-container><h1 class=single-title>Docusaurus 搭建</h1><p class=single-readtime><time datetime=2023-06-28T00:00:00+00:00>癸卯年六月廿八日 · </time>弹指可览</p><div class=single-content><p>Docusaurus 是一款<strong>静态站点生成器</strong>。 可以搭建带有快速客户端导航的<strong>单页应用</strong>,充分利用了 <strong>React</strong>,让你的网站具有交互能力。 它提供了开箱即用的<strong>文档功能</strong>,不过也可用于搭建<strong>各种网站</strong>:个人网站、产品、博客、营销主页等等。</p><p>当下个人知识的整理归纳已经及其重要了,废话不多说。可以先体验一下我的个人 wiki:<a href=https://wiki.7wate.com/>https://wiki.7wate.com/</a>,相信我你一定会爱上它!</p><h2 class=heading id=安装>安装
|
||
<a class=anchor href=#%e5%ae%89%e8%a3%85>#</a></h2><ul><li><p><a href=https://docusaurus.io/>Docusaurus 官网</a></p></li><li><p><a href=https://docusaurus.io/zh-CN/docs>Docusaurus 官网(中文版)</a></p></li></ul><p>因为<strong>中国官网文档更新相对滞后</strong>,所以这里<strong>推荐使用英文官网</strong>,进入后<strong>选择中文</strong>。</p><h3 class=heading id=环境>环境
|
||
<a class=anchor href=#%e7%8e%af%e5%a2%83>#</a></h3><ul><li><p><a href=http://nodejs.cn/download/>Node.js (中文网)</a> <strong>v16.14</strong> 或以上版本</p></li><li><p>本文使用 <strong>Docusaurus 2.0.0-rc.1</strong> 作为演示</p></li></ul><h3 class=heading id=初始化>初始化
|
||
<a class=anchor href=#%e5%88%9d%e5%a7%8b%e5%8c%96>#</a></h3><p>使用命令行工具可以帮助你快速简单地安装 Docusaurus 并搭建网站框架。 你可以在空仓库或现有仓库的任何地方运行这个命令,它会创建一个包含模板文件的新目录。</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>npx create-docusaurus@latest my-website classic
|
||
</span></span></code></pre></div><h3 class=heading id=项目结构>项目结构
|
||
<a class=anchor href=#%e9%a1%b9%e7%9b%ae%e7%bb%93%e6%9e%84>#</a></h3><p>命令行工具成功运行后,你将会在新目录 <code>my-website/</code> 下看到下列文件:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-markdown data-lang=markdown><span style=display:flex><span>
|
||
</span></span><span style=display:flex><span>my-website
|
||
</span></span><span style=display:flex><span>├── blog
|
||
</span></span><span style=display:flex><span>│ ├── 2019-05-28-hola.md
|
||
</span></span><span style=display:flex><span>│ ├── 2019-05-29-hello-world.md
|
||
</span></span><span style=display:flex><span>│ └── 2020-05-30-welcome.md
|
||
</span></span><span style=display:flex><span>├── docs
|
||
</span></span><span style=display:flex><span>│ ├── doc1.md
|
||
</span></span><span style=display:flex><span>│ ├── doc2.md
|
||
</span></span><span style=display:flex><span>│ ├── doc3.md
|
||
</span></span><span style=display:flex><span>│ └── mdx.md
|
||
</span></span><span style=display:flex><span>├── src
|
||
</span></span><span style=display:flex><span>│ ├── css
|
||
</span></span><span style=display:flex><span>│ │ └── custom.css
|
||
</span></span><span style=display:flex><span>│ └── pages
|
||
</span></span><span style=display:flex><span>│ ├── styles.module.css
|
||
</span></span><span style=display:flex><span>│ └── index.js
|
||
</span></span><span style=display:flex><span>├── static
|
||
</span></span><span style=display:flex><span>│ └── img
|
||
</span></span><span style=display:flex><span>├── docusaurus.config.js
|
||
</span></span><span style=display:flex><span>├── package.json
|
||
</span></span><span style=display:flex><span>├── README.md
|
||
</span></span><span style=display:flex><span>├── sidebars.js
|
||
</span></span><span style=display:flex><span>└── yarn.lock
|
||
</span></span></code></pre></div><ul><li><p><code>/blog/</code>:包含博客的 Markdown 文件。</p></li><li><p><code>/docs/</code>:包含文档的 Markdown 文件。</p></li><li><p><code>/src/</code>:如页面或自定义 React 组件一类的非文档文件。</p></li></ul><p> - <code>/src/pages</code> - 所有放在此目录中的 JSX/TSX/MDX 文件都会被转换成网站页面。</p><ul><li><p><code>/static/</code> - 静态目录。</p></li><li><p><code>/docusaurus.config.js</code> - 站点配置文件。</p></li><li><p><code>/package.json</code> - Docusaurus 网站是一个 React 应用。 你可以安装并使用任何 npm 包。</p></li><li><p><code>/sidebars.js</code> - 由文档使用,用于指定侧边栏中的文档顺序。</p></li></ul><h3 class=heading id=运行网站>运行网站
|
||
<a class=anchor href=#%e8%bf%90%e8%a1%8c%e7%bd%91%e7%ab%99>#</a></h3><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span><span style=font-weight:700;font-style:italic>cd</span> my-website
|
||
</span></span><span style=display:flex><span>npm run start
|
||
</span></span></code></pre></div><p>默认情况下,浏览器会自动打开 <a href=http://localhost:3000>http://localhost:3000</a> 的新窗口。</p><p><figure><div><img loading=lazy alt=站点首页 src=https://static.7wate.com/img/2022/07/27/13c9cd02b370f.png></div></figure></p><h3 class=heading id=项目构建>项目构建
|
||
<a class=anchor href=#%e9%a1%b9%e7%9b%ae%e6%9e%84%e5%bb%ba>#</a></h3><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>npm run build
|
||
</span></span></code></pre></div><p>网站内容会被生成在 <code>/build</code> 目录中,随后可以被上传到 <a href=https://pages.github.com/>GitHub Pages</a>、<a href=https://vercel.com/>Vercel</a>、<a href=https://www.netlify.com/>Netlify</a> 等静态网页托管服务。</p><h2 class=heading id=配置>配置
|
||
<a class=anchor href=#%e9%85%8d%e7%bd%ae>#</a></h2><p>配置文件为项目目录下 <strong>docusaurus.config.js</strong>,配置字段官方文档:<a href=https://docusaurus.io/zh-CN/docs/api/docusaurus-config>点击打开</a>。</p><p>一定要参考官方文档,因为项目组贡献者有一位厉害的中国大学生,所以中文文档更新很及时。</p><h3 class=heading id=设置中文>设置中文
|
||
<a class=anchor href=#%e8%ae%be%e7%bd%ae%e4%b8%ad%e6%96%87>#</a></h3><p>docusaurus.config.js 中找到 i18n 配置节点,如下是原配置(其实看得懂英文就知道咋改 🤣):</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span><span style=color:#888;font-style:italic>// Even if you don't use internalization, you can use this field to set useful
|
||
</span></span></span><span style=display:flex><span><span style=color:#888;font-style:italic>// metadata like html lang. For example, if your site is Chinese, you may want
|
||
</span></span></span><span style=display:flex><span><span style=color:#888;font-style:italic>// to replace "en" with "zh-Hans".
|
||
</span></span></span><span style=display:flex><span><span style=color:#888;font-style:italic></span><span>i</span>18<span>n:</span> {
|
||
</span></span><span style=display:flex><span> <span>defaultLocale:</span> <span>'en',</span>
|
||
</span></span><span style=display:flex><span> <span>locales:</span> <span>['en'],</span>
|
||
</span></span><span style=display:flex><span>}<span>,</span>
|
||
</span></span></code></pre></div><p>修改为如下配置设置为中文:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span><span>i</span>18<span>n:</span> {
|
||
</span></span><span style=display:flex><span> <span>defaultLocale:</span> "zh-Hans",
|
||
</span></span><span style=display:flex><span> <span>locales:</span> <span>[</span>"zh-Hans"<span>]</span>,
|
||
</span></span><span style=display:flex><span>}<span>,</span>
|
||
</span></span></code></pre></div><h2 class=heading id=搜索>搜索
|
||
<a class=anchor href=#%e6%90%9c%e7%b4%a2>#</a></h2><p>在使用官方插件中 Algolia DocSearch 搜索时候,会有几率踩坑,可以参考我的部署经验。</p><ol><li><p>正确启用 sitemap 插件,参考文档:<a href=https://docusaurus.io/zh-CN/docs/api/plugins/@docusaurus/plugin-sitemap>sitemap 插件</a>。</p></li><li><p>正确启用 Algolia DocSearch 插件,参考文档:<a href=https://docusaurus.io/zh-CN/docs/api/themes/@docusaurus/theme-search-algolia>Algolia DocSearch 插件</a>。</p></li><li><p>构建项目,<strong>确认插件是否显示</strong>。</p></li></ol><h3 class=heading id=注册账号>注册账号
|
||
<a class=anchor href=#%e6%b3%a8%e5%86%8c%e8%b4%a6%e5%8f%b7>#</a></h3><p>在 <a href=https://www.algolia.com/>Algolia官网</a> 注册账号后,打开控制台新建数据源,填写数据名(<strong>后面会用到</strong>),并选择免费计划。</p><p><figure><div><img loading=lazy alt=新建数据源 src=https://static.7wate.com/img/2022/07/27/c249ea1971f87.png></div></figure></p><p><figure><div><img loading=lazy alt=免费计划 src=https://static.7wate.com/img/2022/07/27/4b2daf39e8a1f.png></div></figure></p><h3 class=heading id=获取-api-keys>获取 API Keys
|
||
<a class=anchor href=#%e8%8e%b7%e5%8f%96-api-keys>#</a></h3><p>控制台打开设置页面,点击 API keys,拷贝 <strong>Application ID、Search-Only API Key、Admin API Key</strong>。</p><p><figure><div><img loading=lazy alt=打开密钥页面 src=https://static.7wate.com/img/2022/07/27/7d53ade2658b4.png></div></figure></p><p><figure><div><img loading=lazy alt="Key 页面" src=https://static.7wate.com/img/2022/07/27/6f7717de46944.png></div></figure></p><h3 class=heading id=配置-docusaurus>配置 Docusaurus
|
||
<a class=anchor href=#%e9%85%8d%e7%bd%ae-docusaurus>#</a></h3><p>打开项目配置文件 docusaurus.config.js,填写如下配置:</p><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span><span>module.exports</span> <span>=</span> {
|
||
</span></span><span style=display:flex><span> <span style=color:#888;font-style:italic>// ...
|
||
</span></span></span><span style=display:flex><span><span style=color:#888;font-style:italic></span> <span>themeConfig:</span> <span>{</span>
|
||
</span></span><span style=display:flex><span> <span style=color:#888;font-style:italic>// ...
|
||
</span></span></span><span style=display:flex><span><span style=color:#888;font-style:italic></span> <span>algolia:</span> <span>{</span>
|
||
</span></span><span style=display:flex><span> <span>apiKey:</span> "Search-Only API Key",
|
||
</span></span><span style=display:flex><span> <span>appId:</span> "Application ID",
|
||
</span></span><span style=display:flex><span> <span>indexName:</span> "数据源名称",
|
||
</span></span><span style=display:flex><span> }<span>,</span>
|
||
</span></span><span style=display:flex><span> <span>}</span>
|
||
</span></span><span style=display:flex><span><span>}</span>
|
||
</span></span></code></pre></div><h3 class=heading id=推送数据>推送数据
|
||
<a class=anchor href=#%e6%8e%a8%e9%80%81%e6%95%b0%e6%8d%ae>#</a></h3><p>由于 Algolia 限制开源项目才可以免费试用爬虫,所以我们要自己推送数据。需要如下环境:</p><ul><li><p>Docker(谷歌一堆安装教程)</p></li><li><p>jq(使用包管理器直接安装)</p></li></ul><p>环境安装好以后,按照如下步骤操作:</p><h4 class=heading id=1-新建-env-文件键值不带双引号>1. 新建 .env 文件(键值不带双引号)
|
||
<a class=anchor href=#1-%e6%96%b0%e5%bb%ba-env-%e6%96%87%e4%bb%b6%e9%94%ae%e5%80%bc%e4%b8%8d%e5%b8%a6%e5%8f%8c%e5%bc%95%e5%8f%b7>#</a></h4><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span><span style=color:#666;font-weight:700;font-style:italic>APPLICATION_ID</span>=Application ID
|
||
</span></span><span style=display:flex><span><span style=color:#666;font-weight:700;font-style:italic>API_KEY</span>=Admin API Key
|
||
</span></span></code></pre></div><h4 class=heading id=2-新建-docsearchjson爬虫配置文件>2. 新建 docsearch.json(爬虫配置文件)
|
||
<a class=anchor href=#2-%e6%96%b0%e5%bb%ba-docsearchjson%e7%88%ac%e8%99%ab%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6>#</a></h4><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
|
||
</span></span><span style=display:flex><span> "index_name": <span style=color:#666;font-style:italic>"wiki"</span>,
|
||
</span></span><span style=display:flex><span> "start_urls": [
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"https://wiki.7wate.com/"</span> <span>#</span> <span>wiki</span> <span>网址</span>
|
||
</span></span><span style=display:flex><span> ],
|
||
</span></span><span style=display:flex><span> "sitemap_urls": [
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"https://wiki.7wate.com/sitemap.xml"</span> <span>#</span> <span>sitemap.xml</span> <span>地址</span>
|
||
</span></span><span style=display:flex><span> ],
|
||
</span></span><span style=display:flex><span> "stop_urls": [
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"/search"</span>,
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"/v3me"</span>,
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"/playground"</span>,
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"/inspector"</span>
|
||
</span></span><span style=display:flex><span> ],
|
||
</span></span><span style=display:flex><span> "sitemap_alternate_links": <span style=font-weight:700;text-decoration:underline>true</span>,
|
||
</span></span><span style=display:flex><span> "selectors": {
|
||
</span></span><span style=display:flex><span> "lvl0": {
|
||
</span></span><span style=display:flex><span> "selector": <span style=color:#666;font-style:italic>"(//ul[contains(@class,'menu__list')]//a[contains(@class, 'menu__link menu__link--sublist menu__link--active')]/text() | //nav[contains(@class, 'navbar')]//a[contains(@class, 'navbar__link--active')]/text())[last()]"</span>,
|
||
</span></span><span style=display:flex><span> "type": <span style=color:#666;font-style:italic>"xpath"</span>,
|
||
</span></span><span style=display:flex><span> "global": <span style=font-weight:700;text-decoration:underline>true</span>,
|
||
</span></span><span style=display:flex><span> "default_value": <span style=color:#666;font-style:italic>"Documentation"</span>
|
||
</span></span><span style=display:flex><span> },
|
||
</span></span><span style=display:flex><span> "lvl1": <span style=color:#666;font-style:italic>"header h1"</span>,
|
||
</span></span><span style=display:flex><span> "lvl2": <span style=color:#666;font-style:italic>"article h2"</span>,
|
||
</span></span><span style=display:flex><span> "lvl3": <span style=color:#666;font-style:italic>"article h3"</span>,
|
||
</span></span><span style=display:flex><span> "lvl4": <span style=color:#666;font-style:italic>"article h4"</span>,
|
||
</span></span><span style=display:flex><span> "lvl5": <span style=color:#666;font-style:italic>"article h5, article td:first-child"</span>,
|
||
</span></span><span style=display:flex><span> "lvl6": <span style=color:#666;font-style:italic>"article h6"</span>,
|
||
</span></span><span style=display:flex><span> "text": <span style=color:#666;font-style:italic>"article p, article li, article td:last-child"</span>
|
||
</span></span><span style=display:flex><span> },
|
||
</span></span><span style=display:flex><span> "strip_chars": <span style=color:#666;font-style:italic>" .,;:#"</span>,
|
||
</span></span><span style=display:flex><span> "custom_settings": {
|
||
</span></span><span style=display:flex><span> "separatorsToIndex": <span style=color:#666;font-style:italic>"_"</span>,
|
||
</span></span><span style=display:flex><span> "attributesForFaceting": [
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"language"</span>,
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"version"</span>,
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"type"</span>,
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"docusaurus_tag"</span>
|
||
</span></span><span style=display:flex><span> ],
|
||
</span></span><span style=display:flex><span> "attributesToRetrieve": [
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"hierarchy"</span>,
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"content"</span>,
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"anchor"</span>,
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"url"</span>,
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"url_without_anchor"</span>,
|
||
</span></span><span style=display:flex><span> <span style=color:#666;font-style:italic>"type"</span>
|
||
</span></span><span style=display:flex><span> ]
|
||
</span></span><span style=display:flex><span> },
|
||
</span></span><span style=display:flex><span> "js_render": <span style=font-weight:700;text-decoration:underline>true</span>,
|
||
</span></span><span style=display:flex><span> "nb_hits": 856
|
||
</span></span><span style=display:flex><span>}
|
||
</span></span></code></pre></div><h4 class=heading id=3-运行-docker>3. 运行 Docker
|
||
<a class=anchor href=#3-%e8%bf%90%e8%a1%8c-docker>#</a></h4><div class=highlight><pre tabindex=0 style=background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>docker run -it --env-file=.env -e <span style=color:#666;font-style:italic>"CONFIG=</span><span style=font-weight:700;text-decoration:underline>$(</span>cat docsearch.json | jq -r tostring<span style=font-weight:700;text-decoration:underline>)</span><span style=color:#666;font-style:italic>"</span> algolia/docsearch-scraper
|
||
</span></span></code></pre></div><p><figure><div><img loading=lazy alt=image-20220727191725309 src=https://static.7wate.com/img/2022/07/27/783c79aea020d.png></div></figure></p><p>如果数据抓取异常,推送到 algolia 的索引条目过少。可以尝试多次运行 Docker,即可解决。至于为什么我也不知道,反正就能搞定 ~</p><h2 class=heading id=总结>总结
|
||
<a class=anchor href=#%e6%80%bb%e7%bb%93>#</a></h2><p>如果想要稳定运行项目,请务必一定<strong>仔细阅读官方文档</strong>。官方文档维护的相当好,主要就是 algolia 搜索哪里,刚开始很容易无从下手……</p><p>因为被 Docusaurus 官方 Showcase 收录了,所以产出一篇文章推广一下 ~</p><p>更多优秀 Docusaurus 站点请访问:<a href="https://docusaurus.io/showcase?tags=personal">展示站点</a></p></div><div class=single-pagination><hr><div class=flexnowrap><div class=single-pagination-prev><div class=single-pagination-container-prev><div class=single-pagination-text>←</div><div class=single-pagination-text><a href=https://zopiya.com/%E6%9C%80%E8%BF%91%E5%8D%8A%E5%B9%B4%E7%9A%84%E7%94%9F%E6%B4%BB/>最近半年的生活</a></div></div></div><div class=single-pagination-next><div class=single-pagination-container-next><div class=single-pagination-text><a href=https://zopiya.com/%E5%86%99%E5%8D%9A%E5%AE%A2%E7%9A%84%E6%AD%A3%E7%A1%AE%E5%A7%BF%E5%8A%BF/>写博客的正确姿势</a></div><div class=single-pagination-text>→</div></div></div></div><hr></div><div class=back-to-top><a href=#top>◈ 扶摇直上 ◈</a></div></div></main></div><footer><p>© 2025 仲平. All rights reserved.</p></footer></body><script src=https://zopiya.com/js/theme-switch.js></script><script defer src=https://zopiya.com/js/copy-code.js></script></html> |