深圳幻海软件技术有限公司 欢迎您!

WWDC 2022:哪些是前端开发者要关注的信息?

2023-02-28

苹果全球开发者大会(AppleWorldwideDevelopersConference​,缩写:WWDC​)是苹果公司每年定期举办的信息技术交流活动,活动旨在向全球的软件设计师展示苹果公司最新的软件及技术,通常用于展示 macOS、iOS、iPadOS、watchOS​ 和&n

苹果全球开发者大会(Apple Worldwide Developers Conference​,缩写:WWDC​)是苹果公司每年定期举办的信息技术交流活动,活动旨在向全球的软件设计师展示苹果公司最新的软件及技术,通常用于展示 macOS、iOS、iPadOS、watchOS​ 和 tvOS 系列以及其他苹果公司的软件和技术。

作为前端开发者,我们主要关注的重点在于 Web 方面。

在过去的一年,Safari​ 的浏览器内核 WebKit​ 发布了超过 162​ 项新功能和改进点,包括新的 dialog​ 元素、懒加载、:has()​ 伪类、Web Locks API、File System Access API​、对 WebAssembly 的多项改进等等。

在本次大会中,苹果公司宣布了 Safari 16 beta​ 版本的发行,我们一起来看看 Safari 16 beta 版本带来了哪些新的能力。

Web Inspector Extensions

Safari 16​ 带来了对 Web Inspector Extensions​ (类似于 Chrome​ 的 Devtools Extension​)的支持。如果你的团队使用 React、Angular、Vue​ 或 Ember​ 这些强大的框架,或者可能是流行的测试套件或其他开发者服务。现在有了 Safari Web Inspector Extensions,你就可以安装来自这些框架和服务的开发工具扩展,从而为你的开发提效。

和 Chrome​ 开发工具扩展的 JavaScript API​  也基本一样。你可以轻松的把现有的 Chrome Extension​ 移植到 Safari​ 上,你只需要在 App Store 就可以搜到这些扩展。

当然,流行的第三方框架和服务的扩展并不是 Web Inspector Extensions​ 唯一令人兴奋的用途。通常,对开发者工具的小幅增强就可以对工作流程产生巨大影响。要了解构建 Safari Web​ 扩展的基础知识、如何将现有扩展转换为与 Safari​ 一起使用,以及如何在 App Store 打包发布,可以看看这个视频讲解 https://developer.apple.com/videos/play/tech-talks/110148/。

Web Inspector Extensions​ 也带来了对 Safari Web Extensions​ 的其他改进,包括能够同步跨 iOS、iPadOS​ 和 macOS 启用的扩展。

容器查询

在响应式布局布局中,经常使用媒体查询(Media Queries)检测视窗的宽高,实现自元素样式的自动调整。但是在一些页面设计中,元素的容器尺寸发生变化时,元素的样式也需要随之变化。很显然,媒体查询无法支持这种场景。

CSS​ 容器查询就是来解决这个问题的,它一直是 Web​ 开发者梦寐以求的功能,简单来说: 容器查询允许开发者根据容器元素的大小来设置元素的样式。它类似于 @media 查询,不同之处在于它根据容器的大小而不是视口的大小进行判断。

Safari 16 支持了一些新的容器查询单位:

  • cqw 查询容器宽度的 1%
  • cqh 查询容器高度的 1%
  • cqi 查询容器 inline 尺寸的 1%
  • cqb 查询容器 block 尺寸的 1%
  • cqmin cqi 或者 cqb 的最小值
  • cqmax cqi 或者 cqb 的最大值
  • macOS 的 Web 推送

macOS Ventura​ 上的 Safari 16​ 即将推出 Web Push​。你可以远程向你的网站和 Web​ 应用程序的用户发送通知。「即使 ​Safari 没有运行,也可以发送这些通知」。

它使用与其他浏览器相同的 Web​ 标准:Push API​ 和 Notifications API​ 以及 Service Worker。

用户可以通过用户手势(例如单击按钮)来选择接收通知。然后,系统会提示他们授予你的网站或应用发送通知的权限。用户能够在通知中心查看和管理通知,并在通知设置中自定义样式并关闭每个网站的通知。

Safari​ 中的 Web Push​ 会使用和 Apple​ 推送相同的通知服务,该服务支持所有 Mac​ 和 iOS 设备上的本地推送。

另外, 苹果还计划在 2023​ 年实现适用于 iOS​ 和 iPadOS​ 的 Web Push。

子网格

CSS Grid 布局​ 在 2017​ 年 3​ 月发布,它彻底改变了 Web​ 布局设计的可能性。然而,Subgrid​ 将 Grid​ 带到了另一个层次,它使得跨复杂布局排列项目成为可能,而不受 HTML 结构的限制。

故名思议,除了操纵同级别的网格,它拥有操纵子网格的能力,它可以实现比 Grid 更复杂的布局,比如下面的例子:

.grid {
  display: grid;
  grid-template-columns: repeat(9, 1fr);
  grid-template-rows: repeat(4, minmax(100px, auto));
  gap: 20px;
}

.item {
  display: grid;
  grid-column: 2 / 7;
  grid-row: 2 / 4;
  grid-template-columns: subgrid;
  grid-template-rows: subgrid;
  row-gap: 0;
}

.subitem {
  grid-column: 3 / 6;
  grid-row: 1 / 3;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

另外, Safari​ 的 Grid Inspector 让你可以让你非常方便的开发和调试子网格布局。

Flexbox Inspector

继去年的 Grid Inspector​ 推出之后,Safari 16​ 添加了 Flexbox Inspector。

Flexbox Inspector​ 可以为你提供更好的 Flexbox 布局可视化,可以帮助你更好的从视觉上区分空闲空间和间隙。

可访问性改进

Safari 16​ 重新构建了 WebKit​ 在 macOS​ 上的可访问性支持,提高了性能和响应能力。这一改进允许 WebKit​ 在比以前更短的时间内为来自客户端(如 VoiceOver​ )的更多可访问性请求提供服务。在一些复杂的网页上,大量的无障碍请求耗时减少了 25%。

该版本还通过确保元素在可访问性树中正确表示,极大地改进了对具有 display:contents 的元素的可访问性支持。

动画改进

CSS Offset Path​ 为 Web​ 开发者提供了一种沿任意形状的自定义路径设置动画的方法。offset-path​ 属性可让你定义要沿其设置动画的几何路径。offset-anchor、offset-distance、offset-position、offset-rotate 属性为你提供了额外的能力来细化被动画对象的精确运动。

#motion-demo {
  offset-path: path('M20,20 C20,100 200,0 200,100');
  animation: move 3000ms infinite alternate ease-in-out;
  width: 40px;
  height: 40px;
  background: cyan;
}

@keyframes move {
  0% {
    offset-distance: 0%;
  }
  100% {
    offset-distance: 100%;
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

使用 Safari 16​,你现在可以为 CSS Grid 设置动画。这意味着你可以对行或列的大小进行动画更改,这又为 Web 动画的实现开辟了一种新的可能性。

Shared Worker

Safari 16​ 新增了一种新型的 Worker​ —— Shared Worker​。与 Service Worker​ 一样,Shared Worker​ 支持在后台运行 JavaScript,但其生命周期略有不同。

只要用户对你的域打开任何 tab​,你的 Shared Worker​ 就会运行,并且对同一域打开的所有选项卡都可以共享同一个 Shared Worker​。比如你让一个 WebSocket​ 连接打开到代表多个选项卡进行通信的服务器,就可以使用 Shared Worker 实现了。

其他

  • 支持通过CSS overscroll-behavior 属性控制当浏览器滚动条到达边界时的行为;
  • HTML input​ 元素支持了<form>.requestSubmit()​ 和showPicker() 方法;
  • CSP内容安全策略​ 支持了新的指令:worker-src。