NativeScript

无意发现一个挺有意思的项目 —— NativeScript。这个项目可以用js来写app应用。如果只是能用js写app应用,那并没有什么稀奇的,毕竟RN都流行很多年了。这个项目最大的特色是号称可以调用全部系统及第三方公开API。

大概了解了下Android端的实现,NativeScript在编译期将原生公共方法生成js描述注入到js引擎中,js端调用的时候,通过jni调用原生反射,运行原生方法。所以实际运行的时候UI都是原生UI,js方法和组件只是原生方法的代理。

想了下看起来似乎挺美好,但是能想到几个重要问题。

  1. 可能存在一定性能问题
    首先js引擎对比原生执行效率会有一些差距,另外反射本身也比较低效,更重要的是由于全部通过反射运行,必然是JIT模式运行,无法享受AOT优化。
  2. 无法使用Web UI组件
    由于不是运行于webview,不存在dom树,组件都是基于原生组件,所以无法发挥Web UI组件丰富的优势,只能使用专为NativeScript开发的UI组件(了解了下官方组件数量较少,第三方开源组件质量不可靠)。

由于没有实际写过,不知道具体编写体验怎么样。感觉写写简单的demo应该还好,做商业应用应该比较吃力,不如选用 Flutter 或 RN 这种更成熟的平台。

Author

Lyuku

Posted on

2022-12-05

Licensed under