2016-12-27 60 views
0

某些跨平台工具(如Xamarin native和RubyMotion)允许为Android和iOS开发两个单独的视图,同时保持两个视图共享业务逻辑。其他人(如Apache Cordova或Xamarin.Forms)共享用户界面和业务层,并可在必要时使用平台特定的覆盖。解译JS跨平台工具中Android/iOS的不同UI

解释的JavaScript框架(NativeScript,React Native或Appcelerator)的状态是什么?他们都专注于使用平台覆盖创建单个UI,还是允许为每个平台创建两个单独的视图?例如,是否有可能在Android中使用Fragments创建视图,但是iOS上的视图不同(因为Fragments在那里不存在)?

回答

2

Cordova使用WebView,这意味着Android和iOS的GUI级别相同,但每个Device版本都不相同。在Android的情况下,每个客户端都拥有自己的Chronium版本,并且可以破坏UI行为。因此开发人员使用Crosswalk来设置固定的Chronium版本。 (额外20M到您的应用程序)。

使用Cordova架构的BTW Ionic使用每个平台的本机行为。例如,对于位于顶部,在iOS Android的标签 - 底部


在另一方面Xamarin(C#),阵营天然(JS)和NativeScript(JS)调用本机API。他们不使用WebView,而是生成本机代码。

例如,如果你创建按钮 - 它会寻找不同的:在Android上 - 材料的主题,在iOS - iPhone主题


不管怎么说,底线是:一切都取决于资源和时间。如果你想快速构建应用程序,以相同的观点 - 我会继续使用Ionic2 + Angular2 + Cordova。

如果您有更多时间 - 请继续使用React-Native或NativeScript(仍有较差的文档)或Xamarin(C#)。

+0

所以这是不可能使用Facebook做,可以说Android的碎片,在NativeScript? – Storm

+0

React-native不使用网页浏览。相反,它实例化本地组件并通过桥与它们进行通信 –

+0

@AbdellahAlaoui right,React-native使用本地组件 –

1

React-native的口号是一次学习,无处不在写。所以,你可以选择适合你的需求,你可以:

  • 在平台之间共享UI。
  • 分享只有业务逻辑。

所以,反应本土的答案是肯定的。您可以创建单独的用户界面,也可以共享它。 由于您正在编写组件,因此分离此逻辑的一种方法是编写component.android.jscomponent.ios.js,并且平台会为您加载适当的一个。请注意,你也可以通过编程来完成。

你可以看到,在the official f8 app行动通过反应本地

+1

NativeScript对于分割逻辑的'file.android.js'和'file.ios.js'同样适用。就用户界面而言,您可以对这些文件进行相同操作,或者您可以使用多种方法在一个文件中嵌入不同的用户界面,可见性属性或将平台特定的用户界面放置在平台标签内,如“”,无论这里是什么