我已经开始研究Native Script with Angular。最好的部分是我可以同时用于Web和移动应用程序的代码共享技术。
但是我想问的一件事是Angular是Google开发的框架,Google还为本机移动应用程序开发提供了另一框架,即Flutter
为什么Google没有使用Telerik通过Native Script实现的Angular框架。我确信一定有某些原因。我想了解原因。
如果我可以使用Angular等通用技能来开发Web和移动应用程序,那么为什么我应该学习/选择Flutter这样的新框架。
我不确定我是否应该在这个地方问这个问题。如果没有,请帮助我找到合适的地方。
答案 0 :(得分:17)
Flutter不是这里的主要交易,真正的东西是Skia。
skia是2D渲染引擎,它允许用户以高性能运行应用程序,而不是使用html(chrome Web引擎)或使用本机外观(nativescript),skia允许我们在屏幕上绘制每个像素屏幕,使我们可以流畅地编写游戏。
在动荡的Live 2018中受到谴责的Google的真实意图是在所有平台之间创建一致的UI:
所有这些框架都将skia用于UI以及用于与OS交互的相应框架(浏览器,桌面,移动设备),因为skia是渲染引擎,并且我们控制每个像素,因此我们可以确保小部件在其上看起来相同所有类型的Skia框架。
另一方面,本机脚本使用它们加载在平台上的节点引擎,并且每次我们尝试使用组件时,我们都调用系统引擎以具有本机外观的方式将组件放置在屏幕上,这使我们要直接使用运行Java / swift的虚拟机的功能,这就是为什么在nativescript中可以使用android。[ANDROID_JAVA_CLASS]
或ios.[SWIFT_CLASS]
的原因。
注意:nativescript不是用于移动开发的有角度的框架,它是用于移动开发的nodejs框架,而Angular / vuejs只是运行在nativescript核心逻辑之上的框架。 这就是为什么如果您愿意的话,甚至可以为nativescript编写一个react插件。
答案 1 :(得分:10)
在本地脚本中,代码未编译为本地代码,它在单独的线程上运行,该线程将代码与本地组件进行通信。运行时使您可以使用JavaScript代码在Android和iOS框架中调用API。为此,他们使用了JavaScript虚拟机-适用于Android的Google V8和随iOS 7.0+一起发布的WebKit的JavaScriptCore实现。尽管 Flutter 将代码编译到本机组件使用的ARM C / C ++库中,所以可能会更好。
我没有机会比较两者的性能,至于NativeScript是用 Typescript / Javascript 编写代码,而 Dart 用于Flutter,而我我对Dart很陌生。
NativeScript是Angular在resources中也列出的一个开放源代码,NativeScript现在有一个很好的社区。如果您有兴趣列出不同框架的优缺点,here是一篇非常不错的文章。
注意:使用代码编辑器测试NativeScript应用online并在您的设备上运行。您可以使用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
甚至您也可以按照here的说明从现有项目迁移到代码共享项目。
答案 2 :(得分:-1)
a) Angular不是Google制作的。
代替
Angular是由一群工程师组成的,他们共同致力于使Web开发变得毫不费力。我们认为编写漂亮的应用程序应该充满乐趣和乐趣。我们正在为未来搭建平台。
来源:https://angular.io/about?group=Angular
b) 那就是框架都在不断出现和消失的问题。学习和使用一个,直到下一个出现。