公司的一个新坑,需要 js 和原生交互。之前我自己搭的交互框架被吐槽了
1
fairytale110 2020 年 2 月 2 日 我借鉴了 workplus 的方案,目前适用于 Android 和 iOS,H5 那边只需要引用一个 js 文件即可。
|
2
fairytale110 2020 年 2 月 2 日 |
3
huiyue 2020 年 2 月 2 日 mpaas 了解一下。
|
4
geekc3t 2020 年 2 月 2 日 phonegap?
|
5
geekc3t 2020 年 2 月 2 日 cordova 这个
|
6
Torpedo 2020 年 2 月 2 日 cordova 还是可以的
|
7
xiangyuecn 2020 年 2 月 2 日 自己撸一个也不是难事,安利一波我的设计模式:
js->native : Request -> Response 支持同步、异步响应,Android IOS 通吃 native->js : Execute -> JavaScript Code 好像只能异步得到 js 结果 ------- 有个开源库用到了这个模式: js 端: https://github.com/xiangyuecn/Recorder/blob/3418c5cc8636b319c17e76e9444309282718fd82/app-support-sample/native-config.js#L37-L99 这个 demo 需要提供的接口太少,没有把接口声明成 app.xxx()这种方式调用,不过自己项目里面的都是提前声明接口然后可以直接 app.xxx()调用 Android 端: https://github.com/xiangyuecn/Recorder/blob/3418c5cc8636b319c17e76e9444309282718fd82/app-support-sample/demo_android/app/src/main/java/com/github/xianyuecn/recorder/RecordAppJsBridge.java#L99-L123 接收请求逻辑还算简单,实际的接口处理逻辑分开在别的类里面按需定义实现 IOS 端: https://github.com/xiangyuecn/Recorder/blob/3418c5cc8636b319c17e76e9444309282718fd82/app-support-sample/demo_ios/recorder/RecordAppJsBridge.swift#L57-L66 和 Android 区别不大 -------- 但我实际项目中使用的 js 接口样子,调用和定义还算方便: https://tva1.sinaimg.cn/large/a32300cdgy1gbi4q9y4zzj20r40hp0tz.jpg 比如调用定位是这样子的: https://tva1.sinaimg.cn/large/a32300cdgy1gbi4pskr5wj20do07nwej.jpg |
8
xiangyuecn 2020 年 2 月 2 日
#7 图还是用 wx1 的好点
但我实际项目中使用的 js 接口样子,调用和定义还算方便: 比如调用定位是这样子的: |
9
jdgui OP @xiangyuecn 感谢,获益良多
|
10
Harry 2020 年 2 月 3 日
同意 7 楼说的。如果你对 js 和 java 都比较熟悉,那么可以自己写一下。一些事件和返回的地方处理起来需要多用心。
如果你也不是使用 react native 的话,那么 https://github.com/turbolinks/turbolinks 这个项目应该可以直接解决你的问题。 |