我目前在所有这些混合移动应用框架中迷失了方向。它们听起来都很棒,但我找不到任何关于用例和主要差异的真实信息。
有人可以向我解释一下,或者为我提供很好的资源,尤其是用例?
我知道这些:Apache Cordova,Ionic,PhoneGap,Steroids(AppGyver),Supersonic(AppGyver),React Native和新的Microsoft Ace(http://microsoft.github.io/ace/)。
免责声明:我可能会将它们完全混合在一起而且彼此之间没有任何关系,因为我已经迷失了。
答案 0 :(得分:31)
我至少已经研究了这个话题至少几年了,并且一直想写一篇深思熟虑的博客文章,总结我所学到的东西,但它似乎永远不会达到我的优先级列表的首位。我将在这里提供一个简短的摘要。
三类混合应用
注意:我确定上面有更好的名字,但这就是 最好我现在想出来。
通常,这些是您在上面提到的基于cordova(又名手机间隙)的应用,例如Ionic,TouchstoneJS,Meteor和AppGyver Steroids。事实上,如果我没记错的话,Steroids是建立在Ionic之上的。这些应用程序试图通过使用标准的基于Web的技术(html,css,javascript)模仿类似本机的组件(按钮,列表视图,抽屉布局,选项卡视图等)来解决混合问题。要访问设备本机组件,他们使用一个名为cordova的桥接器,它将javascript api暴露给本机组件,如摄像头,gps,位置,振动等。这是一个强大的社区,如果您需要访问本机组件, '很可能会找到一个满足您需求的cordova插件。这些类型的应用程序面临的挑战始终是性能。因为它们在WebView(基本上是没有chrome的全屏浏览器窗口)中呈现整个应用程序,所以它只有一个线程来呈现整个页面并执行任何动画等。最后,因为组件关闭,但不太像本机组件,并且因为性能接近,但不像本机性能那么光滑,这些应用程序往往落在神秘山谷的某个地方。他们看起来和感觉都合适,但他们从来都不是。
这些示例包括Appcelerator's Titanium和Xamarin。这些应用程序通过将原生api抽象为通用语言来解决混合问题。对于Titanium,该语言是JavaScript。对于Xamarin,该语言是C#。因此,要在Xamarin中编写Android,iOS,Windows和桌面应用程序,您可以使用它们的抽象(API)在C#中编写所有代码,然后将它们交叉编译为实际的本机应用程序。这些方法有正确的想法,但很多人会说它们在实际实施时不尽如人意。虽然使用Titanium的个人经验,我发现实际构建一个应用程序是非常痛苦的,因为你依赖于他们的抽象。如果他们的抽象层中存在错误,那么你就会陷入困境......直到他们修复它。
我所知道的只有两个例子,Facebook's React Native和Telerik's NativeScript。在我看来,这是移动应用程序开发的未来,如果我是你,那么我就会集中精力。这两种方法都试图类似地解决混合问题,因为在每种情况下,开发人员最终都会编写JavaScript来创建本机组件,但每种方法都采用了非常不同的方法。 React Native通过RCTBridgeModule将您的JavaScript转换为Native,而Native Script通过JavaScript Virtual Machines中的一些聪明技巧让您直接访问本机apis。我还没有使用过NativeScript,所以不知道它是多么成熟或高效。我安装了他们的示例应用程序,对我来说感觉有点迟钝。我认为其中一个最酷的价值主张是它真正让你100%访问本机API(令人兴奋!)。去年我和React Native进行了广泛的合作,我印象非常深刻。两者仍然很年轻,肯定会成熟。
答案 1 :(得分:1)
通过Webview执行的混合应用程序内置于:
前端组件
(HTML / CSS / JavaScript),可让您编写一个看起来像本机app的HTML5应用程序。也称为HTML5移动UI框架
开发人员使用您已经知道的技术,即HTM5,CSS和JavaScript。
实施例
<强>离子强>
包含高度移动优化的CSS HTML和js组件库,并使用Angularjs
支持材料设计
利用Cordova在iOS,Android,Windows Phone和其他平台上使用。
框架7:
在iOS移动应用开发领域的混合应用框架中处于领先地位
Framework 7不支持构建跨平台混合应用程序
UI元素和事务接近本机IOS
JQuery Mobile
所有移动框架的爷爷
jQuery Mobile不会尝试制作看似Android或iOS的应用。相反,它的目的是帮助开发在所有移动浏览器上同样运行的网络应用程序
后端组件
Cordova (原名PhoneGap)
答案 2 :(得分:0)
我对像本地反应这样的混合框架的个人经验是,说实话,它们很棒,但是......
在我的公司,我们创建了一个框架,允许开发共享业务逻辑的混合应用程序,使用flux模式实现。 但是,用户界面完全是原生的。
有关详细信息,请访问https://github.com/bfortunato/aj-framework 它是完全开源的。