Astro

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费额度!

您甚至还无法查看 Astro 的代码或文档(公开),它只是一个正在进行的想法,但您可以观看 Fred 向 Feross 展示它的视频

我必须承认:它看起来很棒。 我看好它的两个主要部分

  1. Jamstack 是一个好主意。 生成静态的、预渲染的、最少的(或没有)JavaScript 页面非常明智。
  2. 组件是一个好主意。 从可组合组件构建界面是正确的抽象。 JavaScript 目前最擅长这一点,因为 ES 模块、模板字面量、Web Components、深度开发的工具等。

我也喜欢 Eleventy,而这在某种程度上感觉像 Eleventy,只是我不喜欢任何模板语言,就像我喜欢 JavaScript 组件一样。

以下是一些有趣方面的列表

  • 就像 Vue 有 .vue 文件,Svelte 有 .svelte 文件一样,Astro 在独特的格式中具有 .astro 文件。 我喜欢它如何在类似 Frontmatter 的格式中强制执行 JavaScript 放在顶部。
  • 它不会替换其他 JavaScript 库。 它就像一个构建在它们之上的站点构建器框架。 您实际上可以使用 React 和 JSX 组件,或 Vue 文件,或 Svelte 文件,包括使用该库的状态管理解决方案。 您在 Astro 文件中 导入它们。
  • 它具有文件系统即默认路由器,如 Next。
  • 它默认具有作用域 CSS,如 Vue 的 <style scoped>,这意味着它甚至不需要 CSS 模块,因为无论如何您都能获得所有好处。
  • 它根本不会向前端发送任何 JavaScript,除非您专门选择加入(或使用其 :visible 语法,该语法仅注入足够的 JavaScript 以根据需要延迟加载更多内容)。
  • 它采用了 Island 架构 的理念,即大多数站点由静态内容组成,只有部分内容是交互式/动态内容。
  • 仅在交互式组件可见时(通过 IntersectionObserver)请求 JavaScript 的想法是该框架的一等公民,有点像任何交互式内容的 loading="lazy"
  • 他们在主页上(针对“提出问题”)提到了 Marko(HTML/JavaScript 混合语言)。 让我想起了像 Alpinehtmx 这样的方法。
  • 它偷偷地加入了 MDX(或类似的东西),这意味着您可以使用 Markdown 编写内容(不错),但也可以在其中偷偷加入 <Components />(也不错)。

我非常喜欢它没有那种“这是一件新事物!你喜欢它!旧事物很糟糕!新事物很棒!”的氛围。 相反,它有一种“我们将从之前出现的所有好主意中窃取每一个,并依靠原生 Web 最擅长的东西”的氛围,这反过来又让我想起了 Baldur Bjarnason 的 “您是哪种寻求新奇的 Web 开发人员?”文章

坏的

这是第一种寻求新奇的 Web 开发人员。 这种类型的人只将历史视为一系列错误,并且新事物必须是好的,因为它们是新的。 为什么有人会创造新事物,除非它是对现状的改进? 因此,它一定是现状的改进

好的

这是另一种寻求新奇的 Web 开发人员,他们试图建立在 Web 的历史和本质之上,而不是试图改变它。