几个月前,一位好友着手开发了一个基于Rust和wgpu的即时模式UI框架。虽然我不是Rust开发者,对UI框架也不感兴趣,不过我还是非常想为这个新生的开源项目出一份力。正好项目需要一个官方网站,让我能够参与到开发之中,贡献我为数不多的前端开发与优化经验。
初识VitePress
站点毫不意外地采用VitePress作为站点生成器。VitePress应该是目前最为流行的文档用途的静态站点生成器了吧,无论是什么领域的项目,只要是官网与技术文档,大概率都是VitePress生成的。之前的我只是一位普通的使用者,现在我终于有机会一睹它内部的构造了。
上手项目,我首先想到的就是打开package.json观察项目的依赖结构。简洁的包列表让我啧啧称奇,如果只是最基础的功能,仅需VitePress本体即可;为了更丰富的功能,我们还额外添加了vitepress-i18n与vitepress-sidebar两个包,即使如此,这和其他的Node.js项目差别还是相当巨大。
虽然表面上的依赖简单不一定意味着项目所需的依赖数量少,但是可以确定的是,VitePress尝试构建一个一站式的生成环境,能够让用户不必在意繁杂的包管理与依赖添加,专注于内容的提供。这对于非Node.js生态的开发者而言,是巨大的优势,降低了学习成本。
VitePress的外观也遵循着同样的思路,没有太多的可调整之处,即使是一个崭新的VitePress站点,稍微添加内容,就和其他VitePress文档无异了。对于文档这一特定用途的站点,设计风格固定也算是一个优点,起码它能够避免让使用者陷入痛苦的外观设计当中。大部分开发者并不擅长设计,也无意在文档之中展现自己的审美。
Astro也有类似的文档解决方案,例如官方的Starlight文档主题,但是在知名度和认可度上,还有很长的路要走。
一站式解决方案
转战VitePress的配置文件,熟悉的功能映入眼帘:导航栏、侧边栏、页脚、搜索,一个文档所需的所有功能,VitePress都提供了原生支持。只需跟随官网的指引完成基础的配置,就能得到可用的文档。
内置minisearch,内置Markdown-it,内置Shiki,可以说,VitePress在“一站式解决方案”这条道路上走得很远,它提供默认的主题与功能,但也不忘提供强大的拓展能力,而这些进阶功能,同样不需要引入额外依赖,只需要编辑配置文件。
我很喜欢VitePress中内置的页脚功能,显然开发者们很熟悉技术文档与开源项目官网的构成,一个简单易用的页脚,让各位展示开源协议与版权信息,简直是再合适不过了。
我觉得VitePress相比Astro等其他站点生成器,最大的不同就是自带预设主题,这使得很多用户甚至忽略了它是一个静态站点生成器的事实。我使用过的Hugo与Astro,都需要用户选择一个主题作为站点启动的前提条件,即使是官方提供的默认模板,也需要用户自行获取。VitePress内置了主题,相当于帮用户省去了获取与选择主题的困扰,减少了一个操作步骤,实在是很精妙的思路。
我了解到VitePress也有许多第三方主题,在这样完善的功能下,设计一个基于VitePress的博客会不会同样方便呢?或许VitePress的主题也是值得我研究的对象。
友情宣传
文章最后,我想为这个新项目做做宣传,虽然我的站点也没有多少流量。之所以喜爱这个项目,不仅是友人开发的关系,更在于它宽松的协议选择,在于它面向未来的特性设计,在于它对性能与视觉效果的极致追求。一切的一切,都满足我对一个有生命力、前景光明的开源项目的向往。
唯一的遗憾就是我对Rust一窍不通了。不过在大模型迅速发展的现在,在AI的辅助下了解、使用一个新的编程语言,似乎又不再像是以前那样的难事?总之,一切皆有可能。
对基于Rust和wgpu的即时模式UI框架感兴趣的读者,欢迎参与到Tessera1的使用与开发之中!
🐷👍