如何用语雀写博客?

1,295 阅读3分钟

前言

过去我总是以用什么工具来写文档(文章)而纠结,直到遇见了语雀

yuque-blog 是最近这几个周末用业余时间设计和实现的一个博客系统,核心目标是:“在语雀上(和你的小伙伴一起)编辑文章,在自己的网站上展示文章”。它基于语雀,实现了博客内容页面的自定义输出,支持同构直出、离线访问等特性;技术架构上,我选用了 beidou (基于 eggjs 的同构框架) 作为后端框架,前端框架采取了常见的 React 全家(半)桶。

yuque-hexo 是用于下载语雀的文章到 hexo 的文章目录下的一款命令行工具。

调研阶段

常见的博客平台根据其形态大致分为以下几类:

  • 无后台(静态部署)
    • 静态页面 + 静态内容
    • 静态页面 + 动态内容管理
  • 有后台

一般来说,在服务器资源允许的条件下,有后台的博客系统(基于 PHP 的 WordPress,使用 Node.js 的 Ghost)是比较普遍的方案,通常情况都会提供一个内容管理的后台管理页面,让写者集中在写作本身,没有太多额外的(技术性)操作;下面可以在几方面稍微对比一下,不同方案下的优劣;

完全静态 静态页面+第三方内容管理 完全动态
经典案例 GIthub Pages(Hexo / Hugo) Github Pages + Github Issue Github Pages + Serverless WordPress / Ghost / Calypso / Typecho
内容管理 + ++ +++
团队协作 ++ +++ +++
文章编辑 + ++ +++
RSS 订阅 +++ +++ +++
可扩展性 + ++ +++
社会化生态 +++ +++ +++
首屏加载 +++ + ++
缓存加载 ++ +++ ++
SEO +++ + +++
性能 +++ ++ +
环境简易程度 +++(静态文件服务器) ++(静态文件服务器+第三方内容管理系统) +(独立部署的 HTTP 服务)

灵光乍现

语雀是一款拥有非常优秀的编辑 / 阅读体验,支持团队协作的知识创作平台;TXD 团队博客包含前端、视觉、交互同学积累的精华文章,由于成员背景原因(设计写代码???),方案 1 和 方案 2 显然不是最佳的选择(设计师的学习成本和内容维护难易度),加上团队里面日常工作中使用语雀来编辑文档和知识仓库梳理,为了降低写作者的学习成本,以及提供良好的编辑体验,决定基于语雀去开发一套完全动态的博客系统。

其中实现的主要的特性如下:

  • 优秀的文档编辑和管理体验(Powered by 语雀)
  • 极速输出博客页面
  • 可定制的博客主题
  • 支持服务端渲染
  • 支持 PWA 及离线访问
  • 便捷的运维体验,提供一键部署的 Docker 镜像

脑洞大开

对于一些有专业背景的同学而言,Github Pages 是最好的博客载体,其要求我们能够提供一个可以输出静态页面的版本;考虑到大多数同学原有的一些基础建设,决定不再重复制作轮子,于是便基于 hexo 开始设计和思考,经过了一系列的预研工作(看源码、找参考……),最终一把梭开发了一个无侵入的命令行小工具 yuque-hexo,只负责同步语雀的文章,下载到本地后生成对应的 hexo 的文章(markdown 文件),对原有的逻辑没有做任何的改造,纯粹的进行了功能扩展。

总结

言归正传,适合自己的才是最好的,体验一款好的产品,再到利用这个产品来扩展到一些相似的场景下,然后系统性的对该场景下的各种设计进行了调研分析和总结,从而达到提升体验和效率的目的。