Svelte Native 是一个社区主导的集成,它将 NativeScript 扩展到一个名为 Svelte 的流行新框架中。对 NativeScript 来说,这是一个激动人心的时刻,因为今天核心团队直接支持 Angular 和 Vue.js,而社区则提供对 React 和 Svelte 的早期支持。
对 Svelte 感兴趣吗?Svelte 由 Rich Harris 创建,用于构建快速应用程序。在 Rob Lauer 的这篇介绍性博文中了解更多关于 Svelte 和 Svelte Native 的信息。
以下是与 Svelte Native 创建者 David Pershouse 的简短访谈
从 Commodore 64 上学习编程后,我一直都是编程的爱好者。我喜欢各种类型的编程。我曾开发过游戏、数据库和 Windows 线上业务应用程序。
在过去的十年左右,我开始从事 Web 和移动开发,主要使用 C# 和当时流行的各种 Javascript 前端框架(angular、backbone、prototype、jquery、ractive、riot、react、extjs)。
我接触 Svelte 比较晚,直到 3.0.0 准备发布才开始关注它。我之前曾使用 Rich Harris 的 RactiveJS 完成过几个大型客户项目,并对体验感到满意,因此我知道 Svelte 会设计得很好,尤其是 v3。主要版本更新可以消除那些需要重大更改才能修复的缺陷。
我最近使用过 React/Preact,想要找到一个开发者体验更顺畅的框架。当我使用 Vue 时,它让我联想起 Ractivejs,于是促使我去看看 Rich 在做什么。Svelte 3 采用编译器方法,对响应式的独特处理方式,看起来像是框架的下一代,因此我加入了这个阵营。
我最近发布了一款使用 preact 和 PhoneGap/Capacitor 编写的手机游戏,一直在寻找一个“原生”移动框架,它像 PhoneGap 解决方案一样易于部署到多个平台,但具有原生速度/功能。我想要现代 JS 前端开发的轻松性和响应性,但同时又拥有类似 Xamarin/Xamarin Forms 的跨平台原生功能。我在尝试 React Native 和 Flutter 之后发现了 Nativescript-Vue,并由此认识了 Nativescript。
我之前曾使用过 Xamarin,知道将完整的移动 SDK 提供给应用程序框架和语言运行时的强大功能。NativeScript 实现了与 Xamarin 相同的目标,但使用的是 Javascript/Typescript,而不是 .Net。它开源且由 Progress 公司维护/开发(该公司在 .Net 生态系统中享有盛誉),这对我来说又多了几项加分项。
找到了 Nativescript-Vue 之后,我想创建一个类似的环境,但适用于 Svelte 3。这也是学习 NativeScript 和 Svelte 的一个好项目。
Svelte Native 的优点也是 Svelte 的优点。Svelte Native 不需要对 Svelte 编译器进行特殊构建。它是一个小的 DOM 抽象,编译后的 Svelte 组件通过它进行交互,并且基于 Nativescript-Vue 中的 DOM 代码。有趣的是,由于 Svelte 的编译器性质,将来我们可以通过为 Svelte 编写自定义编译目标来消除对 DOM 抽象的依赖,该目标将直接生成 Nativescript-core 代码。
Svelte Native 还提供了 Svelte 强大过渡/intro/outro 系统的实现,该系统由 NativeScript 的原生过渡基础设施(在可能的情况下)支持。
他们绝对是支持的。有人提出,未来可能会将项目网站和源代码移到 svelte 命名空间和域名下。Rich Harris 帮助我创建了 REPL,允许我使用 Svelte 网站设计,并且他总是很快地解决影响 svelte-native 的 Svelte 错误/行为问题。他们还在 官方 Svelte Discord 服务器 上创建了 #nativedev 频道。
短期目标是实现与 专业 NativeScript UI 组件 和 NativeScript 6.0 的新 Tab 功能的兼容性。我还希望在默认的 Svelte Native 模板中启用 HMR 支持。
中期目标是创建一个展示/示例页面,展示人们制作的应用程序,并鼓励更多开发。
长期目标是维护该库,使其能够支持最新的 NativeScript 和 Svelte 版本。
试用一下 并报告任何问题。一旦你用 Svelte 写过移动应用程序,你就会很难再用其他方法来做。代码和文档都是开源的,并且可以在 GitHub 上获得。欢迎提交 Pull 请求和/或 Issue,或者如果你需要帮助,可以加入 Svelte Discord 上的 #nativedev 频道。