您对NativeScript的体验如何?

时间:2016-11-23 15:18:36

标签: 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更改怎么办?我是否必须重新生成代码,然后我会错过我的原生扩展吗?

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:2)

我对Native Script进行了一些调查,我的同事在工作时用它编写了一个应用程序,所以我可以为你提供一些信息。 1.跳过

  1. 您可以使用本机脚本开箱即用的组件数量有限。但是,如果您有一个可以为您编写包装器的本机java开发人员 - 您可以使用所有内容。
  2. 仅限于您​​使用的平台。 Android本身有很多风格限制,不容易被淹没。
  3. 不知道
  4. 它有点不同。您的JS对象,或者更确切地说,小部件被转换为Java代码。所以对于盒子里的物品 - 是的,它们很好。如果你为自定义组件编写了一个包装器,那么一切都取决于你。
  5. 是的。
  6. 不,代码已生成,您将如何修改它?更改将在下一个版本中撤消。但是,您可以为应用程序编写本机模块并使用所需的任何功能。这就像定义一个接口,之后可以在JS代码中使用它。