android - 您使用 NativeScript 的体验如何?

标签 android telerik hybrid-mobile-app nativescript

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

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

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

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

最佳答案

很高兴看到您正在评估 NativeScript 以最终在当前和 future 的项目中使用它。 我会尝试将几个问题的答案浓缩为一个,因为它们实际上大部分是相关的。

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

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

关于android - 您使用 NativeScript 的体验如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40768141/

相关文章:

c# - 如何在 radtreeview 项目中显示多于一张图像(wpf - telerik)

telerik - 以下2个命令之间有区别吗

ios - 如何将混合应用程序重定向到主页而不是 Ionic ios 应用程序中的教程页面?

javascript - 如何在Framework7中重写URL?

android - 我该如何修复我的空指针异常

android - 如何在 Intent 中调用新 Activity 时使用变量?

java - 无法解析符号 c882c94be45fff9d16a1cf845fc16ec5

android - 如果 Android Hilt 都可以与 SingletonComponent 一起工作,为什么要对 Android Hilt 使用不同的范围

wpf - MVVM/WPF 应用 RadGridView 绑定(bind)到 EntityFrameworkDataSource

javascript - 在 iOS/Android 上的 HTML5 混合应用程序中持久存储的可靠方法