苹果最近宣布Safari将像Chrome、Firefox和Edge一样使用WebExtensionsAPI扩展技术。
Chrome拥有庞大的扩展生态系统。各种扩展程序为Chrome提供了许多有用的功能,使得Chrome深受用户和开发者的欢迎。其他开发者也尝试在自己的浏览器中添加插件扩展。为了使开发人员免于编写多组代码,Mozilla发布了WebExtensionsAPI。WebExtensionsAPI主要基于JavaScript、HTML和CSS,可以在Chrome、Firefox和Edge等其他浏览器中重新加载和使用。根据Mozilla的官方网站,该API的设计目的是:
使在浏览器上安装插件变得容易;
从addons.mozilla.org(AMO)审查附加组件变得很容易;
提高Firefox多进程兼容性(例如Electrothesis项目);
更改Firefox内部代码时,附加组件不会被破坏;
WebExtensionsAPI应该比现有的FirefoxXPCOM/XULAPI更容易使用;
WebExtensionsAPI应维持可接受的安全和隐私标准。
随着标准浏览器都使用WebExtensionsAPI,这种扩展技术逐渐成为一种不成文的标准,不仅可以让用户从一种浏览器切换到另一种浏览器,还可以提高前端开发人员的开发效率。第一个使用这个API的是Firefox,它从v57版本开始正式采用了WebExtensionsAPI。此后,除了苹果之外,大多数浏览器制造商也采用了该API。尽管开发者一直抱怨,但苹果从未推出过这项功能。
最近,Apple宣布Safari也可以使用WebExtensionsAPI。尽管Apple之前使用的SafariAppExtensions可以方便地在macOS和Safari应用程序之间共享代码,但它们无法将组件移植到其他浏览器,也无法将其他浏览器的设备移植到Safari。
根据苹果官网介绍,开发者需要使用Xcode在Safari中进行测试,并且开发者需要成为苹果开发者计划的成员才能将项目上传到AppStore。创建SafariWeb扩展有两种方法:
将现有扩展转换为SafariWeb扩展。这允许应用程序在macOS的Safari浏览器中使用并上传到AppStore。开发者可以使用Xcode中的命令行工具来简化这个过程;
使用内置模板在Xcode中构建新的SafariWeb扩展。然后开发人员可以重新打包该文件以在其他浏览器中部署。
值得注意的是,SafariWeb扩展需要在macOS11及以上版本或者安装了Safari14的macOS10.14.6或10.15.6中使用。
苹果为允许用户使用Safari做出了很多努力:苹果此前修改了“隐私”偏好设置,以阻止跨站点跟踪并阻止所有cookie;新增“网页翻译”功能等此次,Safari中也引入了WebExtensionsAPI,允许开发者通过SafariWebExtensionConverter开发工具直接将插件从Chrome、Firefox等浏览器部署到Safari。1Password的开发商Agilebits不久前也宣布将其1PasswordX浏览器插件移植到Safari。
据苹果官方介绍,Safari在性能方面领先所有浏览器,比Chrome快50%以上。它还具有低能耗。Safari在视频观看方面的电池续航时间比Chrome和Firefox多出3小时,在浏览方面的电池续航时间则多出1小时。

图片来自苹果官网
如果Chrome中的所有扩展程序都可以在Safari中使用,您会选择切换浏览器吗?欢迎在评论区分享你的想法。
关注我并传播这篇文章,私信我“获取资讯”,即可免费获得价值4999元的InfoQ迷你书!
了解更多