为什么要抛弃 Gatsby
这真的是给人用的的东西?

本篇没有抹黑任何关于 Gatsby 与 JavaScript 的言论,全文仅为个人观点

Gatsby基于Node.js,是近些年来比较新的静态站点生成器。受益于庞大的 JavaScript 开发者社区,随着时间的推移正不断改进。

从某一刻开始,我就被Gatsby的一个主题 清风朗月 深深地吸引住了:可配置性,实时预览热加载开发模式,让我惊叹不已。

心动不如行动,我立刻从本地部署了我的第一个Gatsby博客:Hat’s Blog

“Gatsby Develop”

root@localhost> gatsby develop

success createPages - 0.181s
success Checking for changed pages - 0.001s
success createPagesStatefully - 0.149s
success update schema - 0.048s
success write out redirect data - 0.008s
success Build manifest and related icons - 0.352s
success onPostBootstrap - 0.361s
info bootstrap finished - 47.974s

info bootstrap finished - 47.974s

Whaaaaat? 生成一个静态页面竟然要近50秒时间?
那再让我们看看 Develop Tools Network:

64 个请求
已传输 27.2 MB
28.9 MB 项资源
完成用时:26.52 秒
DOMContentLoaded:1.52 秒

我被这个JS大小(20MB)深深的震慑住了,不过心理安慰:
没更新,这只是Develop,慢一点很正常,生产环境还有Brotli、Gzip嘛,这个槽点先结束了。

“Gatsby Build”

root@localhost> gatsby build

info bootstrap finished - 8.660s
success run static queries - 0.036s - 2/2 56.09/s
success run page queries - 0.028s - 2/2 70.81/s
success write out requires - 0.008s
success Building production JavaScript and CSS bundles - 11.176s
success Building static HTML for pages - 5.226s - 29/29 5.55/s
success onPostBuild - 0.075s
info Done building in 56.0249265 sec

infoinfo Done building in - 56.0249265 sec

噔 噔 咚,每次发布都需要构建60秒左右,这谁能受得了?

陡峭的学习曲线

JavaScript、React、GraphQL 是 Gatsby 支柱的 “三剑客” ,但对新手太不友好了:
React 是一个现代的 JavaScript 框架,但复杂程度远远难于其他类似的 JavaScript 框架。

而 GraphQL 的加入给 Gatsby 注入了新的活力,Gatsby 的灵活性和可拓展性因此大幅度提高。 但 GraphQL 的学习曲线还是很艰难的:新手很难入门这个神奇的数据库。

Hello,Hugo!

将博客迁移到 Hugo ,我将得到:

Start building sites …
hugo v0.101.0-extended windows/amd64 BuildDate=2022-06-16T07:09:16Z VendorInfo=gohugoio
                   | ZH
-------------------+------
  Pages            |  69
  Paginator pages  |   4
  Non-page files   |   0
  Static files     | 143
  Processed images |   0
  Aliases          |  25
  Sitemaps         |   1
  Cleaned          |   0
Total in 453 ms

以及

# 多 - 丰富的插件待我选择,十分方便

# 快 = 毫秒级渲染页面,体验唯快不破

# 好 - 更加完善的自动化部署流程,省去渲染时间

# 省 - 省去繁杂的 React 和 GraphQL 学习过程


最后修改于 2022-07-01