【问题标题】:How are your experiences with NativeScript?您对 NativeScript 的体验如何?
【发布时间】:2017-04-07 16:18:47
【问题描述】:

有没有人有使用 NativeScript 的经验,并且可以将其与开发原生应用程序(尤其是 Android 应用程序)进行比较?

我已经阅读了所有这些文章:

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

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

【问题讨论】:

    标签: android telerik hybrid-mobile-app nativescript


    【解决方案1】:

    很高兴看到您正在评估 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

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

    【讨论】:

      【解决方案2】:

      我对 Native Script 进行了一些调查,我的同事用它编写了一个应用程序,因此我可以向您提供一些我掌握的信息。 1.跳过

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-16
        • 2010-09-25
        • 1970-01-01
        • 2010-09-24
        • 1970-01-01
        • 2011-08-05
        • 2010-10-28
        相关资源
        最近更新 更多