ElementaryUI 是一个旨在通过利用 WebAssembly (Wasm) 在 Web 浏览器中原生运行声明式 Swift 应用程序的框架。它提供了模仿 SwiftUI 的开发者体验,为构建 Web 用户界面提供了熟悉且直观的语法。该框架通过 @State、@Environment 和 @Reactive 等属性包装器包含内置的响应式功能,这些包装器可自动处理 UI 的状态管理。为了简化开发流程,它利用由 Vite 支持的环境,支持带有热重载功能的快速开发服务器,从而实现快速迭代。

ElementaryUI 徽标及 Swift 在浏览器中的品牌标识
ElementaryUI 为构建 Web 界面提供受 SwiftUI 启发的开发者体验。elementary.codes

该框架旨在通过利用 WebAssembly (Wasm) 在 Web 浏览器中原生运行声明式 Swift 应用程序。

从技术上讲,该框架的独特之处在于利用 Embedded Swift 来生成体积较小的、仅为几 KB 的 Wasm 捆绑包。它还具备基于 CSS 的动画系统,其中包括自动的 FLIP(First, Last, Invert, Play)过渡效果。根据项目作者的说法,该框架最初源于一个旨在跨所有平台使用 Swift 的个人挑战,但它提供了一个实际的优势,即允许开发者在 Web 项目中保持在现代、整洁且强大的语言和工具链环境中。作者指出,虽然该框架目前列在 JS 框架基准测试中,但其设计目标是“足够快”以满足大多数使用场景。

尽管具备这些功能,该项目仍面临特定的技术障碍和社区考量。作者承认捆绑包大小仍是一个薄弱环节,并且对 Wasm 模块进行正确的捆绑和拆分仍需要“强行实现”。围绕该项目的社区讨论强调了使用 Swift 的权衡,一些用户将其开发者体验与 Haskell 相提并论,而另一些用户则对 Swift 编译器的速度表示担忧。此外,一些观察者指出,过度依赖与 Apple 生态系统高度相关的语言可能存在潜在风险,尽管其主要目标仍然是提供一种舒适的方式,利用 Swift 的现代特性来构建 Web 项目。