NativeScript与Flutter对比

44

我已经开始使用带有Angular的Native Script进行工作。最好的部分是代码共享技术,我可以用于Web和移动应用程序。

但是,我想在这里问一个问题,那就是Angular是由Google开发的框架,而Google还为原生移动应用程序开发提供了另一个框架,即Flutter

为什么Google没有像Telerik使用Native Script实现的那样使用相同的Angular框架呢?我确信有一些原因。我想了解原因。

如果我可以用一种共同的技能(即Angular)开发Web和移动应用程序,那么为什么我要学习/选择像Flutter这样的新框架呢?

我不确定这是否是我应该提出这个问题的正确场所。如果不是,请帮助我找到正确的地方。


https://flutter.io/docs/resources/faq#why-did-flutter-choose-to-use-dart - Günter Zöchbauer
3个回答

36

Flutter不是主要问题,真正重要的是Skia

Skia是一个二维渲染引擎,允许用户以高性能运行应用程序。这样,我们可以绘制屏幕上每个像素,而不是使用html(Chrome Web Engine)或原生外观(NativeScript)。这使我们可以在Flutter中编写游戏。

谷歌在Flutter Live 2018中揭示了他们真正的意图是在所有平台之间创建一致的UI:

  • 桌面
  • Web(Hummingbird)
  • 移动(Flutter)

所有这些框架都使用Skia进行UI设计,并使用相应的框架与操作系统进行交互(浏览器、桌面、移动设备),因为Skia是一个渲染引擎,并且我们控制每个像素,所以我们可以确保小部件在所有类型的Skia框架上看起来都是相同的。

另一方面,NativeScript使用一个节点引擎,它们在平台上加载该引擎,每次我们尝试使用组件时,就会调用系统引擎将组件放置在屏幕上并具有本机的外观和感觉。这使我们可以直接从运行Java/Swift的虚拟机中使用功能,这就是为什么在NativeScript中,您可以使用Android.[ANDROID_JAVA_CLASS]ios.[SWIFT_CLASS]的原因。

NativeScript的主要发明是围绕着从内部使用本机类,这些类嵌入在他们正在运行的Node.js引擎中以执行特定的平台代码。

当您将 NativeScript 移动代码转换为 PWA 时,由于浏览器有自己的引擎,因此不需要此节点引擎,这样我们可以从 PWA 中删除不必要的代码。

注意:NativeScript 不是用于移动开发的 Angular 框架,而是用于移动开发的 Node.js 框架,而 Angular/vuejs 只是运行在 NativeScript 核心逻辑之上的框架。 因此,如果您想要,甚至可以为 NativeScript 编写一个 React 插件。


有一个名为React-NativeScript的项目,网址是https://github.com/shirakaba/react-nativescript。 - Yaakov David

25
在Nativescript中,代码不会编译成本地代码,而是在与本地组件通信的单独线程上运行。运行时使您能够使用JavaScript代码调用Android和iOS框架中的API。为此,它们使用JavaScript虚拟机-- Android使用Google的V8,而iOS 7.0+使用WebKit的JavaScriptCore实现。虽然Flutter将代码编译为ARM C/C++库,由本地组件消耗,因此可能表现更好。
我没有比较这两者的性能的机会,因为对于NativeScript,您编写Typescript/Javascript代码,而对于Flutter,使用Dart,而我对Dart非常陌生。 NativeScript是一个开源项目,Angular也将其列入resources之一,现在有非常好的NativeScript社区。如果您有兴趣列出不同框架的优缺点,here是一篇非常好的文章。 注意: 使用代码编辑器online测试NativeScript应用程序并在设备上运行。您可以使用Angular或Pure JavaScript或TypeScript或Vue.js风格来构建应用程序。

顺带一提:Google在2015年的Dart开发者峰会上推出了Flutter,而NativeScript则是自2014年起由Progress支持。也许Google想要给开发者其他选项来探索使用其他框架构建本地应用程序。

如果你正在寻找Flutter可用的命令,那么有一个名为fuchsia_reload的命令可以重新加载Google正在开发的新操作系统Fuchsia,因此他们可能想要提供对其的早期支持。

更新: 如果我们想要为Web和手机共享同一个代码库,NativeScript是一个显而易见的选择。Angular和NativeScript团队合作创建了nativescript-schematics,这是一个原理集合,使您能够从单个项目构建Web和移动应用程序。

您可以使用以下方式进行安装

npm i -g @nativescript/schematics

甚至您可以按照这里所述的方式从现有项目迁移到代码共享项目。


-17

a) Angular不是由Google制作的。

相反地

Angular是由一支工程师团队共同打造的,他们热衷于让Web开发变得轻松自如。我们相信编写美丽的应用程序应该是愉悦和有趣的。我们正在构建一个未来的平台。

来源:https://angular.io/about?group=Angular

b) 这就是框架的问题,它们总是出现和消失。学习并使用一个直到下一个出现。


8
这个答案与{NS}或Flutter无关。 :) - Narendra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接