NativeScript:开源移动框架与React Native替代方案

Viewed 0

近年来,React的专利风波持续发酵,促使开发者寻找可靠的替代方案。对于仅使用React进行Web开发的场景,迁移到Preact等技术是成本较低的选择,但需注意Facebook的BSD+专利授权协议也适用于其他开源软件,例如Yoga。Yoga是React Native的本地布局引擎,负责将JSX界面转换为原生组件,目前在React生态内尚无成熟的替代品。

不过,在React体系之外,NativeScript提供了一个强有力的选择。它长期以来与React Native竞争,但之前被Facebook的流行所掩盖。NativeScript是一个与React专利无关的开源库,采用Apache 2.0协议,避免了专利纠纷。其背后的Progress公司在开发工具领域拥有三十多年经验,并已在纳斯达克上市,专注于服务开发者。

NativeScript用于开发iOS和Android原生应用,甚至计划支持Windows Phone。它自主研发了一个本地引擎,工作原理与React Native相似但更具创新性,能够直接访问原生API而无需插件,从而简化JavaScript编写简单功能的过程。在架构上,NativeScript的本地引擎与应用引擎分离,在GitHub上分属不同仓库。官方提供了Angular版本的应用引擎,但也支持原生JavaScript,因此即使不使用Angular,也值得学习。

官方与Angular团队保持良好合作,在多次Angular大会上担任重要角色,因此其Angular实现在完成度和整合性上较为优秀。然而,开发者也可以为其他框架定制应用引擎,例如基于Preact,只要质量达标,官方可能会推荐使用。

以下是一个简单的NativeScript代码示例,展示如何使用Angular组件:

import { Component } from "@angular/core";

@Component({
selector: "my-app",
template: `
<TextField hint="Email Address" keyboardType="email"
  autocorrect="false" autocapitalizationType="none"></TextField>
<TextField hint="Password" secure="true"></TextField>

<Button text="Sign in"></Button>
<Button text="Sign up for Groceries"></Button>
`
})
export class AppComponent {}

除了模板部分外,其余与标准Angular程序相似。此外,官方计划在后续版本中支持angular-cli命令来自动生成组件。

NativeScript的缺点在于它本质上是本地技术,而非Web技术,因此开发者需具备本地应用的基本概念,不能期望它像Web框架那样简单。另外,与React Native相比,NativeScript的社区关注度较低(GitHub星标约11.1k),导致资源相对匮乏。但Facebook专利风波可能促进其生态发展,为开发者提供参与贡献的机会,如翻译文档、开发组件或插件等。

官方近期发布了免费的英文书籍和专业UI组件,以推动社区成长。总体而言,NativeScript作为一个开源替代方案,在专利安全和架构灵活性方面具有优势,适合寻求长期稳定的移动开发框架的开发者。

0 Answers