NativeScript
无意发现一个挺有意思的项目 —— NativeScript。这个项目可以用js来写app应用。如果只是能用js写app应用,那并没有什么稀奇的,毕竟RN都流行很多年了。这个项目最大的特色是号称可以调用全部系统及第三方公开API。
大概了解了下Android端的实现,NativeScript在编译期将原生公共方法生成js描述注入到js引擎中,js端调用的时候,通过jni调用原生反射,运行原生方法。所以实际运行的时候UI都是原生UI,js方法和组件只是原生方法的代理。
想了下看起来似乎挺美好,但是能想到几个重要问题。
- 可能存在一定性能问题
首先js引擎对比原生执行效率会有一些差距,另外反射本身也比较低效,更重要的是由于全部通过反射运行,必然是JIT模式运行,无法享受AOT优化。 - 无法使用Web UI组件
由于不是运行于webview,不存在dom树,组件都是基于原生组件,所以无法发挥Web UI组件丰富的优势,只能使用专为NativeScript开发的UI组件(了解了下官方组件数量较少,第三方开源组件质量不可靠)。
由于没有实际写过,不知道具体编写体验怎么样。感觉写写简单的demo应该还好,做商业应用应该比较吃力,不如选用 Flutter 或 RN 这种更成熟的平台。
NativeScript