关于
年纪大了,看的多了,见的杂了,记忆力也没有年轻的时候那么好了。但是总有些瞬间,有些知识是我们不愿所遗忘的,是值得被回忆想起来的,是能够为我们所用的。 当然咯,有很多方式可以记录。日常生活动态用微信朋友圈记录,工作技能用CSDN等网站记录。但是出于一种怀旧典藏的心理,总觉得数据存在别人那里让我觉得不放心,让我觉得无法掌控,让我觉得不能依自己所想来组织自己的表达。所以觉得还是自己用本地文件记录更好,那么如何让内容展示出去呢,也能够方便自己随时随地查看,毕竟随时随地打开笔记本翻阅查看也不太显示,所以最终决定自己搭建一个博客网站咯,作为一个技术开发从业者,这也是我一直所期望的。
使用Obsidian记录
最开始一直是使用Typora作为编辑器的,后来Typora发布正式版开始收费之后,我也选择成为了正版用户,毫无疑问我认为Typora在单文档编辑方面是其他app无法匹及的。 后来偶然接触到了Obsidian,它提倡的数据本地持有,文档仓库概念,All in One等一些思想与我不谋而合,再花了一两天的时间试用之后,我决定换用Obsidian作为以后的编辑工具了。
安装 File Hider 插件用于隐藏工作区目录,例如 node_modules。 安装 Codeblock Customizer 用于显示代码块行号。
使用Docusaurus作为前端
Typesense作为搜索引擎
在使用上 Algolia DocSearch 是使用体验最好的,也是 Docusaurus 官方支持的,但是奈何其不开源且收费。被我折腾过一次后,第二次就怎么也使用不了了。
Typesense 作为 Algolia 的开源平替版,和 Docusaurus 集成度也还行。但是目前发现它对中文分词好像不太友好。
mkdir $(pwd)/typesense-data
docker run -d --restart unless-stopped --name typesense -p 8108:8108 -v$(pwd)/typesense-data:/data typesense/typesense:26.0 --data-dir /data --api-key="amass_toolset" --enable-cors
编写配置文件 typesense.json
{
"index_name": "amass_blog",
"start_urls": [
"https://amass.fun/"
],
"sitemap_urls": [
"https://amass.fun/sitemap.xml"
],
"sitemap_alternate_links": true,
"stop_urls": [],
"selectors": {
"lvl0": {
"selector": "(//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()]",
"type": "xpath",
"global": true,
"default_value": "Documentation"
},
"lvl1": "header h1",
"lvl2": "article h2",
"lvl3": "article h3",
"lvl4": "article h4",
"lvl5": "article h5, article td:first-child",
"lvl6": "article h6",
"text": "article p, article li, article td:last-child"
},
"strip_chars": " .,;:#",
"custom_settings": {
"separatorsToIndex": "_",
"attributesForFaceting": [
"language",
"version",
"type",
"docusaurus_tag"
],
"attributesToRetrieve": [
"hierarchy",
"content",
"anchor",
"url",
"url_without_anchor",
"type"
]
},
"conversation_id": [
"833762294"
],
"nb_hits": 46250
}
创建 .env
文件
TYPESENSE_API_KEY=amass_toolset
TYPESENSE_HOST=amass.fun
TYPESENSE_PORT=8108
TYPESENSE_PROTOCOL=http
运行scraper
docker run -it --rm --env-file=$(pwd)/typesense-data/.env -e "CONFIG=$(cat $(pwd)/typesense-data/typesense.json | jq -r tostring)" typesense/docsearch-scraper:0.9.1
自定义导航栏
Docusaurus在移动端的响应式布局,不太符合我的要求:
npm run swizzle @docusaurus/theme-classic Navbar/Content -- --eject
import React from 'react';
// ...
import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
import UserLogin from '@site/src/components/UserLogin.jsx';
export default function NavbarContent() {
return (
<NavbarContentLayout
// ...
right={
// ...
<DefaultNavbarItem className={styles.mustDisplay} label="留言板" to="/MessageBoard" />
<UserLogin />
}
/>
);
}
.mustDisplay {
display: inline-block !important;
}
.searchBar {
position: static !important;
}
自定义 NotFound 页面
Docusaurus 自带的404页面,我们可以自定义,让其更生动:
npm run swizzle @docusaurus/theme-classic NotFound -- --eject
npm run swizzle @docusaurus/theme-classic MDXComponents -- --eject # 这里我们自定义TaskList
另外,在使用Nginx时,如果遇到错误,也可以指向到这里:
error_page 500 502 503 504 /404.html;
location = /404.html {
root amass_blog;
}
支持Mermaid
npm install @docusaurus/theme-mermaid