Replies: 1 comment
-
选择静态托管服务前面提到,我们需要使用一个静态网页托管服务来帮助我们部署自己的外部资料库。这样的服务有很多,我挑几个比较有名的给大家介绍一下:
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
描述
因为简悦基于 Local First 构建的存储体系,其导出文件全部都会存储在本地同步目录的
output
目录下。如果我们开启了导出 HTML 功能,则阅读模式下的文章就会离线备份到本地。由于这样的机制,我们可以尝试把
output
路径下 HTML 文件托管到网络上,使用成熟的静态文件托管服务把 Local 的文档备份变成在线的资料库,而令人可喜的是,这样的静态托管服务很多,而且大多数都有免费的套餐,个人使用基本不会产生费用。结合简悦的 自动化 和 外部链接 功能,我们也很容易在阅读文章的过程中,随时把标注的内容输出与输出的外部链接绑定其实,实现从阅读笔记到外部资料库的深度跳转。
下面我们来看看如何实现。
选择静态托管服务
前面提到,我们需要使用一个静态网页托管服务来帮助我们部署自己的外部资料库。这样的服务有很多,说几个我个人挑选托管服务的决策点:
尽量要支持 CLI 的方式进行部署,这样意味着我们可以通过代码的方式进行自动化的部署,而不必每次都去到服务网站操作;
尽量要支持 HTTPS,保证和自己资料库通讯的安全性以及主流浏览器的绿锁认证;
尽量能支持自定义域名,这样如果自己有域名可以分配一个专用的域名解析到资料库中,这样如果自己以后的服务需要进行迁移的话,不管换成了什么方案,只要把域名解析到新的服务上,可以做到无缝迁移。
最终选择的服务是 Netlify。(本文不会深度评测每个服务的各种优缺点、部署与构建速度、操作便捷度等)本文主要介绍思路,原理一致,大家大可选择其他自己喜欢的托管服务。
演示
下面的链接就是一个已经搭建好的外部链接资料库 Demo 页面:
sr-demo-site.netlify.app
教程
准备
output
文件夹,且通过导出服务将 HTML 文件导出到该目录配置部署服务
创建网站
创建完 Netlify 的账号后,网站会引导用户创建 Team 以及 Sites。 Team 的名字根据自己的情况随意,site 就是我们即将建立的资料库,默认情况下有三种创建方式:
由于我们不需要使用任何工程方式构建网站,所以选择【手动部署】即可。
创建完成之后,Netlify 会给出一个大大的上传按钮,让我们通过拖拽的方式部我们的文件:
我们现在可以尝试把
output
目录上传。上传成功之后就会自动生成一个项目的在线地址:https://<site_name>.netlify.app/
,点击这个地址,你会发现“404 Page Not Found”,这是因为output
目录下没有index.html
文件造成的,不用担心。此时找到output
目录下的任意一个 HTML 文件,如03-<title>.html
,把文件名拼接到网页 URL 后面就可以发现文件已经成功托管了。通过命令行部署
如果每次部署都需要通过打开网页,上传整个
output
目录来完成,必然十分的麻烦,因此下面设置通过命令行的方式来部署网站。Netlify 官网教程给出了非常详细的 CLI 部署手册,我简要地讲解一下其中的核心步骤:
安装
通过
npm
全局安装 Netlify 的命令行管理工具:登录
通过以下命令调用网页端授权,让命令行工具获得你的权限:
绑定
Netlify 有一个很有趣的功能,是可以把本地的某个目录和 Netlify 站点进行绑定,只需要进入到
output
目录,执行:然后选择你的站点,就可以把
output
目录和站点绑定起来了,以后在output
目录下执行部署命令,可以直接部署到指定的站点。部署
Netlify 的部署分为两种情况,部署出一个草稿版本和部署到生产环境,我们的项目很简单,没有其他的构建过程,因此直接部署到生产环境即可,进入到
output
目录,执行:netlify deploy --prod -d .
根据提示确认:本次变更的文件都已同步到 Netlify,站点文件都有更新到 CDN,部署成功。
自动化部署
到目前为止,我们已经实现了通过命令行一行命令部署
output
目录到资料库网站,那么我们也可以选择通过各式各样的自动化工具来自动执行部署命令进行部署。例如 windows 计划任务,linux/mac crontab;或者通过 windows 的 dropit,macos 的 Hazel/keyboard maestro 等工具监听output
目录,当发生变化的时候就执行一次部署等。这里的思路不一而足,和每个的人电脑环境相关,下面我介绍一下在 Mac 上使用系统自带的定时任务工具 crontab 自动定时部署的方案供大家参考。首先进入定时任务的编辑模式
然后向任务表中添加任务:
这样,每天晚上8点到凌晨1点,每隔一个小时就会进行一次自动部署。
保存并退出后,可以通过下面的命令确认自动所有的定时任务清单:
这里可以额外给大家补充一下 crontab 的格式:
几个典型的任务示例:
简悦的外部链接配置
简悦中有一个功能叫做【外部链接】,使用的简悦的开发者服务器部署的一个需要鉴权的托管(即官方托管),现在我们使用 Nerlify 做了托管,为了让简悦的【外部链接】功能生效需要做一些改动:
https://<site_name>.netlify.app/{{id}}-{{title}}.html
{{an_ext_uri}}
占位符作为外部链接。将上面的内容复制到选项页 → 服务 → 定制导出
然后在 Markdown 辅助增强插件中就会实现下图的功能。
更高阶的用法
因为我们使用了静态页面托管服务,只要我们准备好对应的
index.html
和404.html
就可以实现【资料库】的索引,找不到对应文章的提示等。这些过程可以在本地通过对
simpread_config.json
文件的解析来构建生成,这里仅提供了一个脑洞,等待大家去填空。区别
官方资料库(阅读列表) · 静态部署 · 建站方案 的区别 👇
附录
建站方案
官方资料库方案
关联
各种静态服务的对比 请看这里。
占位符
{{an_ext_uri}}
更多用法 请看这里。如果你是 Obsidan 用户,可直接看 此教程 来实现标注自动导入功能。(包含:Markdown 辅助增加插件 以及 自动化辅助增强插件的配置)
Beta Was this translation helpful? Give feedback.
All reactions