您对NativeScript的体验如何?

unl*_*101 3 android telerik hybrid-mobile-app nativescript

有没有人有NativeScript的经验,可以将它与开发本机应用程序进行比较,特别是对于Android?

我读过所有这些文章:

我知道其中有三个可能已经过时了.但我想问你所有的开发人员:

  1. 您对NativeScript的体验如何?
  2. 有没有你不能使用的Android组件?这些是哪些?
  3. 造型真的如此有限吗?
  4. 应用程序在运行时真的看起来与在上面引用的第一篇文章的图片中的样机真的不同吗?
  5. 将原生Android对象加载到JavaScript代码中是否始终正常工作?
  6. NativeScript是否使用我编写的NativeScript代码生成Android-Platform的Java代码?
  7. 如果我想使用一些仅限本机的功能,是否可以修改此代码?如果我想进行UI更改怎么办?我是否必须重新生成代码,然后我会错过我的原生扩展吗?

pka*_*nev 8

很高兴看到您正在评估NativeScript以最终在当前和未来的项目中使用它.我会尝试将一些问题的答案压缩成一个,因为它们实际上是相关的.

  1. 跳过.*
  2. 这取决于已通过自定义视图/插件或模块公开的内容.每个NativeScript应用程序附带的核心模块包含在常见API下Android和iOS的最基本的包装器.有一些插件(nativescript npm模块)可以在本机android视图(例如nativescript-telerik-ui,一个)上提供额外的包装器,其中nativescript-carousel大多数是由NS社区创建的.
  3. 正如RexSplode在我之前提到的那样 - 它主要是强加某些限制的平台.NS使用CSS来声明样式,但是如果你需要的东西不是现成的,你也可以以编程方式访问本机组件并管理它们的样式和外观.
  4. 首先我要指出的是,您链接的前三篇文章已经超过一年了,相信我,NativeScript从那时起已经发展了很多.有了所有可用的组件(还记得我前面提到过的npm模块吗?),你很有可能与一个风格良好的原生Android模型获得接近1:1的相似性.
  5. 在构建时,为项目中使用的Android/Java公共API生成元数据.当JavaScript引擎(V8)启动时,该元数据被加载到内存中,构建原型链,并附加回调,这样当您调用new android.widget.Button();JavaScript代码时,将调用正确的虚拟机指令和本机按钮将被创建.静态方法的访问方式类似,请查看官方文档以更好地了解它的工作原理.https://docs.nativescript.org/runtimes/android/advanced-topics/execution-flow
  6. 和,和.2.只要您希望扩展模块或本机框架中不可用的本机Android类,就会生成Java代码,或者更确切地说是编译的Java代码.扩展类与在Java中执行它的方式非常相似 - 扩展类,并创建new接口的实现.这意味着您不必打开Android Studio来创建新类,将其构建为本机插件,然后将其添加到项目中,因为您可以使用JavaScript/TypeScript在NativeScript代码中完成所有操作.https://docs.nativescript.org/runtimes/android/generator/extend-class-interface

免责声明:我是NativeScript工程团队的成员