微言码道的官网是: https://taoofcoding.tech
微言码道的官网是我在2021年元旦三天假期的时候做的一个网站,自那以后,因为业余时间有限,除了网站内容上有所变更以外,网站本身没有任何更新。
考虑都到了2022新的一年了,就想着对它再折腾一下,周末我也调研了next.js以及tailwind css等朋友推荐的不错的前端技术,但最终没有采纳。文末会简要说下为什么没有采纳next.js与tailwind css。
所以这次主要是添加了一些功能,更新了基础技术依赖等,更新点包括:
•添加了DocSearch文档搜索功能•添加了gittalk评论功能•调整与美化了对Markdown的显示•从Gatsby V2升级最新V4版本•升级Material UI至最新的MUI 5•生产打包添加gzip支持,优化网站请求大小
技术构建背景
微言码道的官网是基于Gatsby Cockpit CMS MUI构建而成。其中Gatsby是基于React的静态网站生成框架,而 Cockpit cms则是存储网站内容的headless cms。
在最初的技术选型时,有考虑过hexo以及Wordpress两个选项。
Hexo -- 灵活性欠缺
没有使用hexo开源的博客系列的原因在于,hexo是一个专注于博客的产品,它的灵活性非常欠缺,而我对微言码道的构思中,远不止博客一个内容,还包括电子书,myddd开源项目,视频及音频多种形式。
WordPress -- 相对过重
对于我这种需求,WordPress其实是个比较好的选择,它也是当今互联网的主流。
但考虑到WordPress是一个基于PHP及MySQL的产品,其产品形态过重,而微言码道的东西,虽然内容是动态更新,但以静态页面来展现会更轻,更快,更好。
另外,结合考虑到我也会前端技术,所以,自己做一个更灵活可控,也能自己随便折腾,方便很多。
因此,在2020年底了解了Jamstack理念以及基于React的Gatsby技术后,决定基于Gatsby完全开发一个网站,这个在2021年元旦用了三天假期完成。
更新说明
本次折腾更新说明如下:
添加了DocSearch文档搜索功能
集成了免费的DocSearch文档搜索服务,现在开始,你可以在官网中搜索文章或其它内容。
DocSearch是algolia推出的一个非常有价值的服务,主要是为开源博客或技术博客提供文档搜索支持,你只需要向它进行申请就好了。
我的https://myddd.org 的搜索功能也是基于DocSearch实现的
添加了gittalk评论功能
现在开始,对于任何一篇我写的博客,都可以在下面直接进行评论了。
这个功能有赖于Gittalk服务,是一个基于Github issue的产品,也就是评论其实是存在Github issue中,非常有意思。
调整与美化了对Markdown的显示
博客都是基于Markdown编写的,因此这次调整与美化了对Mardown的渲染与显示样式。整体上来说比以前更简洁与雅致了。
从Gatsby V2升级最新V4稳定版
2021年元旦期间做这个网站时,当初Gatsby还是V2版本,现在Gatsby已经更新到了V4版本,添加了许多新的功能,优化了网站构建速度等。
基于未来持续更新此网站的长远考虑,升级适配到最新的Gatsby V4版本。
升级Material UI至最新的MUI 5
微言码道官网的UI是选择的Material UI,一个非常好的React UI框架,与antd design相比,它更适合TO C互联网及移动设备,而antd design则更适合企业后台管理页面。
我的myddd starter的UI也是基于Material UI的。
Material UI最近升级到了MUI,一个重新品牌命名的全新版本。同样为了后续持续更新官网的考量,本次更新升级到了最新的MUI。
生产打包添加gzip支持,优化网站请求大小
基于Gatsby提供的压缩插件,将官网的打包形态换成了gzip模式,这样网页更小,加载速度就会更快了。
为什么没有采用next.js与tailwind css
在与一些前端朋友讨论前端网站技术时,next.js是被推荐的,tailwind css过往也被提及过。这一次折腾,我在想着要不要从Gatsby迁移至next.js,并且再尝试着换成tailwind css
在经历了一翻尝试后,最终放弃,原因如下:
next.js SSG开发体验较差
next.js确实非常不错,也非常流行。但在使用getStaticProps生成静态页面的开发过程中,每次都会重新请求与处理,这个非常影响体验,导致开发下速度非常慢。难以接受。
对此,官网也有说明:Note: In development mode, getStaticProps runs on each request instead.
next.js 插件不丰富
next.js似乎是专注于开发层面的技术,没有丰富的插件。而Gatsby的优点在于它有非常多的插件。几乎你想要什么,都要现成的插件来帮你处理。而且有相当一部分是官方的插件。
tailwind css缺少成套组件
tailwind css这种原子化的CSS思路,我觉得非常好玩,也很喜欢。但问题是tailwind css全是原子化的css,没有成套的组件,这意味着诸如弹出框,进度条等可能要自己写或网上找第三方,这非常不方便。而MUI则有一整套组件可供使用。
所以,在尝试与权衡后,决定仍然使用了Gatsby MUI的搭配。
永不停止的折腾
当然,微言码道的官网不会就折腾到此为止。对它的折腾仍然是永不停止的。
而我最迫切想折腾的其实是UI。
虽然我会前端相关开发,但设计与UI设计始终非我所长。现在这个UI是我借鉴一个自己觉得还不错的网站来的。
我对微言码道官网的UI的要求就是:简洁,雅致,不花哨,我还在寻找下一个自己喜欢的网站UI样式并重整官网。
期待下一次对它的折腾。
附录
微言码道官网是基于Jamstack理念而做的网站,如果你想了解更多背后的技术相关细节,这几篇文章会对你有所帮助。
1.一文带你了解Jamstack2.headless cms,无头CMS?