在 Web 组件的发展历程中,过去要想使用
Shadow DOM
,只能依赖
JavaScript
渲染。这种实现方式让使用
Shadow DOM
的
Web
组件在服务器端渲染(SSR)上寸步难行,形成了一个关键性短板。然而,所有主要的 UI 框架都越来越重视 SSR,因为它能显著提高性能、加载速度、SEO 以及增强网页的弹性。
随着声明式
Shadow DOM
的出现,这一局限被打破。现在,开发者可以实现完全不依赖
JavaScript
的
Shadow DOM
应用。
声明式 Shadow DOM 被视作一种基础工具,更多时候将由库或框架来封装使用,以提升开发者的体验,而非手动书写。
过去,
React 19
是最后一个完整支持 Web 组件的框架。未来,我们可能会看到框架不仅仅是支持 Web 组件,而是全面接受和拥抱它们。也许不久的将来,一个类似于 Next.js 的 Web 组件框架将应运而生。
Import Maps 导入模块
在 JavaScript 开发中,我们习惯了用这样的方式来导入模块:
import React from"react";
乍一看,这似乎是 ES 模块的代码。但如果你仔细观察,会发现字符串里的路径既不是绝对 URL,也不是相对路径。我们只是习惯这么写,因为 JavaScript 打包工具会识别它为 npm 包,并自动从
node_modules
文件夹中查找。
然而,如今情况发生了变化。通过 HTML 的 Import Maps,我们可以将诸如
"react"
这样的值映射到实际的 URL 上,从而直接在浏览器中导入。
举个例子,如果你从一个包含如下 Import Map 的 HTML 文件中执行上述 JavaScript:
在这个例子中,我们将“卡片”视作一种从数据中生成的组件,并且这种组件可能是页面上的众多之一。因此,使用唯一的
view-transition-name
是实现细腻过渡效果的关键,而最好的介入点无疑是在 HTML 之中。
响应式视频
现代网页设计中,响应式图像已经是提升网站性能和用户体验的常用技术。通过 HTML 提供的
元素,我们可以灵活地控制
,根据不同条件切换源图像,实现了内容的最佳展示。这个强大的概念原本源自
标签,但由于一些原因,它曾从大多数浏览器中消失。然而,如今得益于 Scott Jehl 和他的团队的努力,这一功能荣耀归来。
借助
media
属性,我们能够为视频源添加条件控制。虽然在实践中,更多的可能是用于宽度查询,但它几乎能处理任何媒介特性。以下是一个简单的例子: