Gatsby还是Next.js,微言码道官网折腾事记

2022-03-09 14:05:55 浏览数 (1)

微言码道的官网是: 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?

0 人点赞