We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
react native 和 flutter的优缺点
JS Bridge实现原理
https://juejin.im/post/5abca877f265da238155b6bc
2.1 JavaScript 调用 Native
注入API
UIWebView
WKWebView
addJavascriptInterface
@JavascriptInterface
拦截 URL SCHEME
URL SCHEME是一种类似于url的链接,是为了方便app直接互相调用设计的,形式和普通的 url 近似,主要区别是 protocol 和 host 一般是自定义的,例如: qunarhy://hy/url?url=ymfe.tech,protocol 是 qunarhy,host 则是 hy
拦截 URL SCHEME 的主要流程:Web 端通过某种方式(例如 iframe.src)发送 URL Scheme 请求,之后 Native 拦截到请求并根据 URL SCHEME(包括所带的参数)进行相关操作
2.2 Native 调用 JavaScript
本质其实就是执行拼接 JavaScript 字符串,从外部调用 JavaScript 中的方法,因此 JavaScript 的方法必须在全局的 window 上
result = [uiWebview stringByEvaluatingJavaScriptFromString:javaScriptString];
[wkWebView evaluateJavaScript:javaScriptString completionHandler:completionHandler];
android 调用示例
webView.loadUrl("javascript:" + javaScriptString);
4.4版本之后的版本,也可以用 evaluateJavascript 方法实现
evaluateJavascript
webView.evaluateJavascript(javaScriptString, new ValueCallback<String>() { @Override publicvoidonReceiveValue(String value){ } });
React Native Android端 JS层调用Java层实现流程:
JS将需要调用的方法的moduleID、methodID与arguments一块push到MessageQueue中,等待Java层的事件驱动
React Native Android端 Java层调用JS层实现流程
JNI
在编程领域,JNI (Java Native Interface,Java本地接口)是一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用/或库,也可以被其他程序调用。 本地程序一般是用其它语言(C、C++或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序。
React Native热更新之CodePush https://juejin.im/post/5d0b05acf265da1bc5526908
The text was updated successfully, but these errors were encountered:
No branches or pull requests
react native 和 flutter的优缺点
JS Bridge实现原理
https://juejin.im/post/5abca877f265da238155b6bc
2.1 JavaScript 调用 Native
注入API
UIWebView
和WKWebView
有不同实现方式addJavascriptInterface
(4.2之前) 和@JavascriptInterface
(4.2之后)两种注入方式拦截 URL SCHEME
2.2 Native 调用 JavaScript
UIWebView
和WKWebView
调用示例android 调用示例
4.4版本之后的版本,也可以用
evaluateJavascript
方法实现React Native Android端 JS层调用Java层实现流程:
React Native Android端 Java层调用JS层实现流程
JNI
React Native热更新之CodePush
https://juejin.im/post/5d0b05acf265da1bc5526908
参考资料
The text was updated successfully, but these errors were encountered: