Nativescript的最基本功能是它可以转换不同的平台'语言和API:用于Javascript(或另一种给定的单一语言,例如C#),例如对于iPhone,它是Objective C语言和iOS API:s,对于Android手机,它是Java语言和Android API:s。
Nativescript"构建时反映到Javascript代理"在这里是中心。
阅读各种" Nativescript与任何"在线页面,我很清楚这些页面的作者并没有真正讨论那个确切的方面,因此这些文章根本无法用于概述这种情况。
因此我想在这里问你:
哪些项目提供了这一基本功能 - 从不同智能手机(可能是桌面)平台到Javascript(或其他单一语言,如C#)的语言+ API绑定?
所有 WebView / HTML呈现的基于UI的解决方案在这里是不合格的。只有原生UI组件解决方案才有资格。请随时列出DISQUALIFIED解决方案,供大家参考,并仔细标记它被取消资格。
因此我理解Apache Cordova(https://cordova.apache.org/docs/en/latest/guide/overview/)是不合格的。
我更喜欢Javascript,但是让我们枚举所有项目,而不管在统一层使用哪种语言,因此Xamarin在此线程中是合格的。
对于那些各自合格的解决方案,它们是否真的像Nativescript一样整体/完整,支持,或者它们如何比较?
对于相应的解决方案,他们是否还提供了一个运行时,它将底层不同的UI API集成到一个跨越多个平台的连贯的UI API中? (对于Xamarin,我理解这个问题的答案是 NO - 不同平台需要不同的代码。)
他们在方法上的主要区别是什么?
我选择的一些可以合格的名字是" React Native"," Appcelerator Titanium"和" Electron" (https://electron.atom.io/)。
这个问题对于像我这样依赖解决方案的应用创建者或创业公司来说非常重要,并且希望能够做出很多贡献,因此这是一个长期的选择。
因此,对于我想要的每个相关解决方案: * NAME,URL:其名称,带URL *不合格?:取消资格或不取消资格 *自动反射:是否具有自动构建时间反射,任何细节 *语言:统一语言(例如Javascript) * UNIFIED UI CODE:平台之间的UI代码相同 * PLATFORMS:支持平台 *代码转换:有关如何管理应用源代码的任何说明,例如它是在设备上以Javascript身份运行,是否应用于Javascript代码的任何代码转换(例如,解析实际上不是有效Javascript的自定义标签),在Javascript上应用的任何类型的编译等。
请告诉我。
这对于概述非常有价值。
再次感谢Telerik和Nativescript团队制作这个梦幻般的技术!!
答案 0 :(得分:1)
移动强>
Cordova / PhoneGap / Ionic - https://cordova.apache.org/ - 取消资格 - 统一用户界面 - JS / HTML / CSS - 基本上是一个包装的网页视图,可以制作本机绑定来电。从某种意义上讲,您可以通过自己创建的插件访问本机平台。实际上,Microsoft有一个名为Project Ace https://microsoft.github.io/ace/的项目,它允许您访问Cordova / Phonegap应用程序中的Native API。应用程序代码在webview中运行;并且所有内容都被打包到您构建到应用程序中的操作系统和插件中。尽管"营销"说话(离子对于试图混淆这里的市场真的很糟糕); Cordova / PhoneGap / Ionic并非真正的原生应用程序。它可能使用一些本机控件,但引擎在webview中运行。
Flutter - https://flutter.io/ - 取消资格 - 统一用户界面 - Dart - 这是市场上另一个有趣的条目;它是所有平台上完全编译的代码,因此它比基于JS的引擎更具性能。此外,它被编写为一个非常高性能的UI(用于UI的单独线程)。要访问平台上的本机API,您需要使用已编译的dart所期望的界面以及iOS或Android API来创建插件。
保险丝 - https://www.fusetools.com/ - 取消资格 - 统一用户界面 - JS - 这是一个有趣的项目;它实际上将标记编译为已编译的代码。我相信JS引擎在自己的线程上运行,而Fuse运行时处理GUI线程。据我所知,所有的thunking /反射都必须通过插件来完成。
NativeScript - https://www.nativescript.org - 合格 - 统一用户界面 - JS / XML / CSS - 在两台设备上使用相同的标记语言进行屏幕布局,拥有自己的内置系统marshal在两个平台上调用操作系统。访问任何API资源都不需要额外的插件,iOS和Android上的所有内容都可以通过纯JavaScript访问。在应用程序的主线程上运行Javascript引擎,如果使主线程忙,可能会导致性能问题。由于它的设计,它可以重复使用几乎所有Android AAR / JAR插件和iOS cocoapod插件未经修改,带来了大量的Native控件,通常只有在使用ObjC / Swift / Java时才能使用。它也是唯一一个零日访问新API的人,因为反射在运行时得到解决。
React Native - http://www.reactnative.com/ - 取消资格 - 统一用户界面 - JS - 它也是一个基于JavaScript引擎的系统,但它没有内置的反射。几乎所有对设备API的访问都需要通过编译的插件来运行,这些插件可以访问本机api。需要注意的一点是,这个JS引擎在自己的线程上运行,主线程保留给GUI。这可以使应用程序开箱即用,因为在单独的线程上会发生任何阻塞,但是使GUI相关的插件更难做到。
Xamarin - https://www.xamarin.com/ - 合格 - ??? - C# - 它有反射构建的sorta。当他们发布新版本时,他们基本上会创建一个带有当前反射的thunking库。因此,当新版本的OS出现时,他们必须重新生成C#thunkings才能使用它。应用程序在iOS上编译,在Android上我相信它使用Mono来运行应用程序。所以你不能在iOS上运行时做某些事情,比如 eval(' console.log(" hi"); / *甚至更多JS代码* /')就像你可以在基于JS的引擎上一样。
<强>桌面:强>
电子 - https://electron.atom.io/ - 不合格 - 统一用户界面 - HTML / CSS / JS - 这是一个基于桌面的环境,可以合并节点和Chrome。因此,您可以访问任何Node api(相当大)和任何chrome api并创建应用程序。但是,您需要创建插件所需的任何级别。
NW - https://nwjs.io/ - 不合格 - 统一用户界面 - HTML / CSS / JS - 基本上与Electron相同。
一对夫妇注意到:
所有基于JavaScript的引擎都不编译代码;它们都在运行时运行JavaScript代码。
您可以使用Cordova / PhoneGap / ionic在桌面(使用电子/新手),网络和移动设备之间轻松共享应用。但它仍然是所有平台上的网络应用程序。
您还可以将NativeScript与Angular一起使用来创建可在移动,Web和桌面(电子/新闻)应用程序之间共享其98%代码库的应用程序。基本上,某些应用程序的唯一区别就是屏幕布局,因为您需要Web的div / input标签,以及Mobile端的StackLayout / TextInput。但其余的代码和逻辑可以是通用的,并且正常访问元素。