这听起来可能很严格,但正是这种做法使得 Astro 网站默认保持快速,并且避免开发者不小心发送不必要或不想要的 JavaScript,而拖慢他们的网站速度。
只需使用一个 client:*
指令,就可以将任何静态 UI 组件转变为交互式岛屿。然后 Astro 会自动构建并打包你的客户端 JavaScript,以优化性能。
<!-- 现在这个组件在页面上是可交互的了!
而网站的其他部分仍然是静态。 -->
<MyReactComponent client:load />
在使用群岛时,客户端的 JavaScript 只会加载你所使用 client:*
指令明确标记的交互组件。
并且由于交互是在组件层面配置的,所以你可以根据每个组件的使用情况来处理不同的加载优先级。例如,client:idle
告诉一个组件在浏览器变为空闲时加载,而 client:visible
告诉一个组件只有在进入视口后才加载。
Astro 群岛的最明显的好处就是性能:你网站的大部分区域都被转换为了快速、静态的 HTML,JavaScript 只有在需要的时候才会加载到各个组件中。JavaScript 是一个加载得最慢的资源。每一个字节都影响着阅读者的体验!
另一个好处是并行加载。在上面的一些假想例子中,重要性更低的图像轮播不应该阻挡更重要的页头部分的加载。它俩并行加载但独自激活(hydrate),这表明阅读者并不需要等着更沉重的图像轮播加载完毕就可以与页头交互了。
更棒的地方在于:你可以准确地告诉 Astro 如何以及何时渲染每个组件。如果该图像轮播的加载成本真的很高,你可以附加一个特殊的客户端指令,告诉 Astro 仅在轮播在页面上可见时才加载它。如果用户从未看到它,它永远不会被加载。
在 Astro 中,作为开发人员,你可以明确告诉 Astro 你的页面上的哪些组件也需要在客户端浏览器中运行。Astro 只会准确地补充页面上需要交互性的内容,并将你的网站的其余部分保留为静态 HTML。
群岛正是 Astro 在默认情况下能够如此迅速之秘诀!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论