有哪些像Nativescript这样的技术项目,从某种意义上说,是一个本地平台到Javascript+本地反射代理绑定



Nativescript最基本的功能是将不同平台的语言和API:s转换为Javascript(或其他给定的单一语言,例如C#),例如,对于iPhone,它是Objective C语言和iOS API:s,对于Android手机,它是Java语言和Android API:s。

Nativescript的"构建时对Javascript代理的反射"是这里的核心。

在网上阅读各种"Nativescript vs.whatever"页面时,我很清楚,这些页面的作者并没有真正讨论这一方面,所以这些文章根本不能用来概括这种情况。

因此,我想在这里问你:

有哪些项目提供了这一基本功能-从不同的智能手机(可能还有桌面)平台绑定到Javascript(或其他单一语言,如C#)的语言+neneneba API?

所有基于WebView/HTML呈现的UI的解决方案在此不合格。只有原生UI组件解决方案符合条件。请随意列出不合格的解决方案,供大家参考,并仔细标记它不合格。

因此,我理解Apache Cordova(https://cordova.apache.org/docs/en/latest/guide/overview/)被取消资格。

我更喜欢Javascript,但让我们列举所有项目,而不依赖于统一层使用的语言,因此Xamarin在这个线程中是合格的。

同样,对于那些各自合格的解决方案,它们真的像Nativescript那样全面/完整吗?

对于相应的解决方案,它们是否还提供了一个运行时,将底层不同的UI API集成到一个跨多个平台的一致UI API中?(对于Xamarin,我知道这个问题的答案是否-不同的平台需要不同的代码。)

他们在方法上的主要区别是什么?

我选择的一些可以被限定的名字是"React Native"、"Appcelerator Titanium"one_answers"Electron"(https://electron.atom.io/)。

这个问题对任何像我这样的应用程序创建者或初创公司来说都很重要,他们会非常依赖解决方案,也希望能做出很大贡献,所以这是一个长期的选择。

因此,对于我想要的每个相关解决方案:*NAME,URL:其名称,带URL*不合格?:是否不合格*AUTO-REFLECTION:是否具有自动构建时反射,任何细节*LANGUAGE:统一语言(例如Javascript)*统一的UI代码:平台之间的UI代码相同*平台:支持的平台*代码转换:关于如何管理应用程序源代码的任何注释,例如,它是否在设备上以Javascript运行,是否应用于Javascript代码的任何代码转换(例如,解析出本身实际上不是有效Javascript的自定义标记),应用于Javascript的任何类型的编译,等等。

请告诉我。

这对于概述非常有价值。

再次感谢Telerik和Nativescript团队创造了这项神奇的技术!!

移动:

  • Cordova/PhoneGap/Ionic-https://cordova.apache.org/-不合格-统一UI-JS/HTML/CSS-基本上是一个包装好的Web视图,可以进行本地绑定,您可以从中调用。从某种意义上说,您可以通过创建的插件访问本地平台。事实上,微软有一个名为project Ace的项目https://microsoft.github.io/ace/允许您访问Cordova/Phonegap应用程序中的Native API。应用程序代码在Web视图中运行;一切都与你在应用程序中构建的操作系统和插件紧密相连。尽管有"营销"的说法(ionic在这里试图混淆市场真的很糟糕);Cordova/PhoneGap/Ionic并不是真正的原生应用程序。它可能使用一些本机控件,但引擎是在网络视图中运行的。

  • 颤振-https://flutter.io/-不合格-统一UI-Dart-这是市场上另一个有趣的入口;它是在所有平台上完全编译的代码,因此它可以比基于JS的引擎更具性能。此外,它被编写为一个非常高性能的UI(UI的独立线程)。要访问平台上的原生api,您需要使用编译后的dart所需的接口和iOS或Android api创建插件。

  • 保险丝-https://www.fusetools.com/-不合格-统一UI-JS-这是一个有趣的项目;它实际上将标记编译成已编译的代码。我相信JS引擎在自己的线程上运行,Fuse运行时处理GUI线程。据我所知,所有的thunking/reflection都必须通过插件完成。

  • NativeScript-https://www.nativescript.org-合格-统一UI-JS/XML/CSS-在两个设备上使用相同的标记语言进行屏幕布局,有自己的内置系统将调用封送到两个平台上的操作系统中。访问任何API资源都不需要额外的插件,iOS和Android上的一切都可以从纯JavaScript访问。在应用程序的主线程上运行Javascript引擎,如果使主线程繁忙,可能会导致性能问题。由于其设计,它几乎可以重复使用所有未经修改的Android AAR/JAR插件和iOS cocoapod插件,带来了丰富的Native控件,而这些控件通常只有在使用ObjC/Swift/Java时才能使用。它也是唯一一个可以零天访问新API的,因为反射是在运行时解决的。

  • React Native-http://www.reactnative.com/-不合格-统一UI-JS-它也是一个基于JavaScript引擎的系统,但没有内置反射。几乎所有对设备API的访问都需要通过编译的插件运行,这些插件可以访问本地API。需要注意的一点是,这个JS引擎在自己的线程上运行,主线程是为GUI保留的。这可以使应用程序开箱即用,因为任何阻塞都会发生在一个单独的线程上,但会使GUI相关的插件更难实现

  • Xamarin-https://www.xamarin.com/-合格-???-C#-它有某种内置的反射。当他们发布新版本时,他们基本上创建了一个带有当前反射的thunking库。因此,当新版本的操作系统出现时,他们必须重新生成C#thunkings才能使用它。应用程序是在iOS上编译的,在Android上我相信它是使用Mono来运行应用程序的。因此,您无法在iOS运行时执行某些操作,如eval('console.log("hi");/*甚至更多的JS代码*/'),就像在基于JS的引擎上一样。

桌面:

  • 电子-https://electron.atom.io/-不合格-统一UI-HTML/CSS/JS-这是一个基于桌面的环境,融合了节点和chrome。因此,您可以访问任何Node api(相当大)和任何chrome api,并创建一个应用程序。然而,任何更低级别的东西都需要创建一个插件。

  • NW-https://nwjs.io/-不合格-统一UI-HTML/CSS/JS-基本上与Electron相同的注释。

几个注意事项:

  1. 所有基于JavaScript的引擎都不会编译代码;它们都在运行时运行JavaScript代码。

  2. 您可以使用Cordova/PhoneGap/ionic在桌面(使用electronic/nw)、网络和移动设备之间轻松共享应用程序。但它仍然是一款适用于所有平台的网络应用程序。

  3. 您还可以将NativeScript与Angular一起使用来创建应用程序,该应用程序可能在移动、web和桌面(电子/nw)应用程序之间共享98%的代码库。基本上,一些应用程序中唯一的区别只是屏幕布局,因为Web需要div/input标记,移动端需要StackLayout/TextInput标记。但是其余的代码和逻辑可以是通用的,并且可以正常访问元素。

最新更新