在开发可跨平台运行的应用程序时,不乏工具。 它最初是从PhoneGap开始的,后来变成了Cordova。 然后是性能接近本地的混合框架,例如React Native和NativeScript。 最近还有Google的Flutter。
我的观点是,那里有很多这样的框架。 如果您对Google的“跨平台移动开发框架”进行快速搜索,就会相信我。 如果您刚刚开始开发移动应用程序,那么它可能会瘫痪。 这就是为什么了解您的选择很重要的原因。
因此,今天我将向您介绍Fuse ,这是另一个用于开发可跨平台工作的移动应用程序的平台。
在本文中,我将致力于回答以下问题:
- 什么是保险丝?
- 它的优缺点是什么?
- 它是如何工作的?
- 与React Native等更流行的替代品相比,它又如何呢?
什么是保险丝?
Fuse是一个用于使用UX标记和JavaScript开发跨平台应用程序的平台。 它与React Native和NativeScript属于同一类别,但其主要卖点在于提供了使开发人员和设计人员能够实时协作的工具。
Fuse使用UX标记,这是一种基于XML的语言,它为UI提供了构建块。 它还允许您指定用户与它们交互时不同组件的行为,因此命名为“ UX”。
开始使用Fuse时要了解的另一件重要事情是,它不是Cordova这样的基于浏览器的平台。 因此,即使它允许您使用JavaScript代码,也不能在浏览器环境中使用所有JavaScript功能。
Fuse提供了不错的polyfill集合,使您可以执行诸如执行AJAX请求或设置执行一段代码的间隔之类的事情。 除此之外,您仅限于核心JavaScript功能。
优点
- 跨平台:使您能够构建可在Android和iOS设备上运行的应用程序。
- 本机性能: UX标记被编译为本机代码,这就是为什么性能可与本机媲美(如果不相同)的原因。 OpenGL加速了不同的效果和动画,从而带来了一流的用户体验。
- 声明性代码:动画,效果和过渡是通过UX标记声明的。 因此,诸如单击按钮时缩放按钮之类的事情完全是通过UX标记进行管理。 这使您可以将JavaScript代码集中在诸如向API发出请求,执行计算以及编写业务逻辑之类的事情上。
- 对开发人员和设计人员友好: Fuse使用Web开发人员了解和喜爱的技术:JavaScript用于处理任务,而XML类似于UX。 他们用于构建UI的UX标记非常简单,即使对于设计人员而言,也易于使用。
- 良好的文档编制:对不同的功能和API进行了良好的文档编制。 他们还收集了一些示例 ,尽管其中大部分都展示了他们的用户体验。
- 可扩展:保险丝使用一种称为Uno的语言来扩展本机功能。 这意味着,如果您需要通过FuseJavaScript API未公开的本机功能,则可以自己实现自定义功能。
缺点
- 年轻的社区:与React Native相比,Fuse的社区还很年轻,而且并不是那么活跃。 他们有一个Slack频道和一个论坛 。 他们也有一个社区软件包页面,但是当您查看GitHub存储库时,并没有太多活动。 也缺少有关Fuse的博客文章和教程。
- 不支持现有JavaScript框架:保险丝仅支持原始 JavaScript。 因此,如果您来自Vue,React或Angular,并且想在Fuse平台上使用您的技能,那将是不可能的。
- 不支持Linux:如果不在Windows或macOS上,则无法使用Fuse开发应用程序。
- 没有NPM支持和打包系统:您不能使用NPM安装和使用现有JavaScript库。 尽管有一些已知的JavaScript库可以工作,但是如果没有允许开发人员安装实现特定功能的现有库的软件包系统,该平台并不是真正完整的!
- 不支持本机ES6:保险丝仅支持ECMAScript 5.1来编写JavaScript代码。 但是,您可以使用Babel这样的编译器将ES6代码转换为ES5。
保险丝如何工作?
在后台,Fuse通过Uno编译器将UX标记转换为本地C ++代码。 Uno是一种类似于C#的语言,用于编写Fuse的所有核心类。 因此,您编写的UX标记与Fuse框架一起被编译为C ++。 之后,本机平台工具(Android Studio或Xcode)采用该C ++代码并编译本机应用程序。
至于JavaScript代码,由JavaScript VM在运行时解释。 这意味着UI和业务逻辑彼此独立。
保险丝与React Native相比如何?
如果不与现有平台进行比较,那么关于新平台的介绍性文章就不会完整。 可与Fuse媲美的平台是React Native。 因此,我们将根据以下标准比较这两个平台:
- 平台功能
- 性能
- 码
- 可扩展性
注意,我将只比较Fuse的免费功能,因为React Native是一个免费平台。
平台功能
Fuse和React Native都具有以下功能:
- 热重载:对代码的更改会自动反映在应用程序预览中。 但是,如果您比较UI更新发生的速度,Fuse显然是赢家。 他们的热装几乎是即时的。
- 使用本机功能JavaScript API: Fuse和React Native都允许您通过JavaScript API访问本机设备功能,例如摄像机,地理位置和推送通知。 但是,如果您比较文档,很明显React Native有更多可用的API。
以下是仅保险丝可用的功能:
- 在多个设备上预览:这使开发人员和设计人员可以在具有不同外形尺寸的多个设备上预览应用程序。 唯一的要求是,开发机器应与设备位于同一无线网络上。 这非常有用,因为他们会立即查看在特定视口上看起来是否有些不好。
- 桌面预览:这允许在桌面上预览应用。 请注意,这对计算机的性能影响很小。 这是因为它实际上不是设备模拟器。 桌面预览还允许您在多个视口上预览应用程序。
- 预览应用程序:如果您想快速预览应用程序,还可以使用适用于Android和iOS的客户端应用程序。 这使您可以扫描QR码,然后在设备上打开应用程序。 您可以根据需要在任意数量的设备上执行此操作。 对源代码的更改会自动反映在这些设备中的每一个上。
与自定义预览(在设备上预览应用程序的默认方式)相比,预览应用程序的唯一缺点是自定义Uno代码和第三方程序包将无法工作。 地理位置,推送通知和本地通知也将不起作用。 在这种情况下,最好使用自定义预览。
性能
Fuse的性能可与本机媲美,因为UX标记已编译为特定平台的本机UI。 并且由于所有动画,效果和过渡都是在标记本身中定义的,因此它已经知道在例如按下按钮时该怎么做。 如前所述,JavaScript在单独的线程上运行,并且完全不会影响UI性能。 最重要的是,Fuse使用了OpenGL ES,它提供了硬件加速的图形性能。 这意味着可以同时使用不同的动画和效果,而不会对UI性能产生重大影响。 这使Fuse成为开发手机游戏的非常合适的平台。
另一方面,React Native为每个平台使用一个桥接模块。 此模块充当JavaScript API(包括UI组件)和本机功能之间的连接,因此它们可以彼此通信。 由于本机组件和React Native的相应UI组件之间的通信成本,这使得React Native的性能不及Fuse。
码
Fuse和React Native都提供了标记语言作为UI的构建块。 但是,仅通过比较Fuse和React Native的文档,您就可以看到React Native具有更多代表其本机副本的组件。
Fuse的UX标记允许您在用户与组件交互时描述其动画。 例如,您可以按以下方法创建一个在按下按钮时其大小变为其原始大小三倍的按钮。 如果您不指定保险丝,保险丝会考虑转换的时间:
另一方面,React Native几乎所有内容都依赖JavaScript。 在下面的代码中, TextInput
组件依赖于要在状态中初始化的text
。 然后,每当用户输入的文本更改时,它都会对其进行更新:
this.setState({text})}
value={this.state.text}
/>
这是为文本字段提供默认文本的方式:
constructor(props) {
super(props);
this.state = {
text: 'Default Text'
};
}
在这两者之间,就开发人员和设计人员之间的协作而言,Fuse将业务逻辑与管理UI分开的方式是有利的。 UX标记足够使设计人员理解,因此他们可以在开发人员处理业务逻辑的同时对其进行处理。
可扩展性
Fuse允许您使用与所有核心类相同的语言来扩展本机功能。 但是,这确实需要您了解如何在Android和iOS中使用本机API。 在Fuse的Uno中,您可以使用外部代码来实现本机功能。 当前,Uno仅支持iOS的Objective-C和Android的Java。 然后公开结果类,以便您可以从JavaScript调用它。
同样,React Native有一个适用于iOS和Android的相应桥接模块。 该桥模块充当本机功能和JavaScript之间的桥梁。 就像Fuse一样,这要求您具有Objective-C或Java的使用知识。
这两个平台还允许您为每个目标平台扩展本机UI组件。 那么,例如,如果您想为Android上的本机工具提示控件实现相应的UI组件怎么办? 您可以在Fuse和React Native上做到这一点。
保险丝值得吗?
如果您提出我的意见,我会说这取决于您的特定用例。 保险丝绝对可以投入生产。 它的主要优势是它的性能以及从构思到可行的原型的速度。 用Fuse创建的应用程序具有很高的性能,并且也使开发人员和设计人员之间的协作非常容易。
它的主要缺点是其社区。 Fuse明确发布了使Fuse在后台运行的库 ,从而致力于开源。 但是,它们仍然是一家小公司(至少与Facebook相比)。 这意味着他们必须以一种或另一种方式赚钱。 这就是为什么他们有专业的付费计划 ,这些计划更适合团队和企业。 因此,可以假定他们的大部分努力将用于开发这些付费工具。 这使开源工作成为了第二等公民。
如果您在一家每天开发应用程序的公司工作,那么Fuse是一个不错的选择。 但是,如果您是像我这样的独立开发人员,那么我们大多数人会坚持使用免费计划。 对于大多数用例来说,它已经足够好了,但是如果您需要自定义本机功能,则必须自己实现。
归根结底,这完全取决于您的用例。 如果您发现您的应用不需要使用一整套服务,工具和本机API,请使用Fuse。 否则,请不要。 除非您有很多时间来开发自定义的本机模块,否则不要这样!
结论
您现在应该对Fuse是什么,它如何工作,它的优缺点以及是否值得尝试作为更流行的移动开发框架的替代品有一个很好的了解。 在本系列的第二部分中,我们将看一下如何使用Fuse开发应用程序。
翻译自: https://code.tutsplus.com/articles/introducing-fuse-for-cross-platform-app-development--cms-30793