JSI

JS核心理论之《React Native原理浅析》

我的梦境 提交于 2020-05-05 15:32:35
React Native是一个优秀的跨平台移动应用解决方案,可以让你轻松地使用React(和JavaScript)来创建native移动应用程序。 React Native 需要使用 JavaScript 引擎执行 JavaScript 代码,包括 JavaScriptCore、Hermes、V8。 随着Flutter等新框架的崛起,React Native正经受着越来越大的挑战,RN性能上的瓶颈愈发明显。为了在与Flutter等框架的对抗中保持竞争力, RN在架构上也进行了一次非常大的升级。 原有架构及问题 一共分四个部分: 用户编写的React代码 React代码转换之后的js The Bridge Native side 原有架构最大的问题 : 组件和 API 太过依赖 JSBridge 的初始化 ,而且通讯能力也局限于这一条通道。 JS和Native之间并不真正直接通信,它们的通信依赖于 跨Bridge传输的异步JSON消息 。 它们之间传递的信息,都要序列化为JSON之后进行异步传输。这样就造成一个比较常见的性能问题,比如快速滑动ListView的时候会白屏。 因为 JSBridge 的异步关系导致了 shadow 层最终呈现到原生的 UI 是异步的,而且滑动太快后会有大量的 UI 事件会阻塞在 JSBridge。 UI 的渲染过程分为三层: JS 业务层、shadow

android与JS交互,互相调用方法,跳转到网页

杀马特。学长 韩版系。学妹 提交于 2020-05-02 04:46:25
在main下面New - Folder - Assets Folder,在Assets下面新建一个js_android.html <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title></title> <script type="text/javascript"> //这个方式是被java调用的 function androidCallJs(){ alert("java调用js弹窗"); } </script> </head> <body> <input type="button" onclick="jsi.showToast('js调用Android,我是徐庆臣')" value="js调用java代码"/> </body> </html> activity_main.xml的里面 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match

一种在 python 中用异步协程实现的HTTP-API测试工具

南楼画角 提交于 2020-02-27 07:23:33
1 实现内容 通过包装 python 的内部模块 argparse , asyncio 和第三方库 aiohttp ,结合 python 3.5 之后的 async , await , 装饰器 等语法糖编写了一个 HTTP-API 测试工具,各 HTTP-API 以协程为单位异步并发请求。 对于主要心思花在 诸如 HTTP 结合 RESTful 接口设计开发或架构相关得广泛 的角色可以考虑用这个工具测试所编写的HTTP-API接口。如和是30个相同HTTP-API的请求的运行打个照面(异步并发将节约2s时间): ... 15 http://api.heclouds.com:80/ipc/video/boot_address 31.41ms 17 http://api.heclouds.com:80/ipc/video/boot_address 46.86ms 20 http://api.heclouds.com:80/ipc/video/boot_address 46.86ms sync request total time: 1939.13ms async request total time: 203.08ms time saved about 1736.05ms from sync to async ---------------------done-------------