Lume是更好用的Eleventy
此前约半年间,我的博客一直基于Eleventy构建。选择Eleventy的原因并非它有多好用,而仅仅是因为我调查过的其他静态站点生成器都强加了不必要的限制以达到“简单”。
- 必须以指定的文件结构组织内容(Jekyll、Astro等)
- 必须使用指定的模板语言(Hugo、Zola等)
- 必须使用指定的标记语言(MkDocs、VitePress等)
- 必须携带脚本(Next.js、Nuxt等)
Eleventy没有以上限制,但也远没有达到我的预期:毫无设计,东拼西凑,不标类型,文档一坨。虽然Eleventy把接口稳定性作为卖点,但是我总有一种下一秒就会轰然散架的脆弱感,所以我仍一直在寻找更好的替代品。
Lume是Deno采用的生成器,几乎是Eleventy的精神续作。体验了不到一天,带来的愉悦就足够我决定迁移了。
项目 | Eleventy 3.0.0 | Lume 2.4.3 |
---|---|---|
数据层叠 | ✗ 不含正文 ✓ 默认深度合并 | ✓ 含正文 ✗ 深度合并还没做 |
渲染顺序 | ✓ 自动计算依赖图 | ✗ 手动指定 |
静态资源 | ○ 可选的预览时复制 ✗ 必须指定目录或扩展名 | ✗ 预览也必须复制 ✓ 复制未处理文件 |
复合模板引擎 | ○ 仅限搭配Markdown | ✓ 任意 |
JSX | ✗ 支持程度跟没有一样 | ✓ 官方插件 |
组件系统 | ✓ WebC官方插件 | ✓ 内置 |
索引 | ○ 标签 | ○ 条件表达式DSL ✓ 函数判据 |
批量生成页面 | ○ 单级数据分页,功能受限 | ✓ 生成器函数 |
后处理 | ✗ PostHTML API暂未公开 | ✓ Deno DOM |
TypeScript | ✗ 支持程度跟没有一样 | ✓ 开箱即用 |
增量编译 | ✗ 实验性,常需重开 | ✗ 默认开启,粒度很粗 |
仍存在的问题:
- 出道三年,知名度低,生态缺乏,可能也跟绑定Deno有关。
- 集成的新模板引擎Vento并没有解决任何问题。能不能别惦记那b模板引擎了?
- Lume CMS目前仍处于0.x的阶段,很简陋。
- 我一直想念Vue的模板语法,比JSX好写得多。在Eleventy中有WebC代餐。但现在可能不得不接受JSX的霸权了。
最后,我想说这是一个典型的博客谬误:在捣鼓网站基建上花的时间比写文章的时间还多。