安卓原生和 js 交互有好用的框架吗

2020-02-02 14:52:14 +08:00
 jdgui

公司的一个新坑,需要 js 和原生交互。之前我自己搭的交互框架被吐槽了

7145 次点击
所在节点    Android
10 条回复
fairytale110
2020-02-02 15:38:37 +08:00
我借鉴了 workplus 的方案,目前适用于 Android 和 iOS,H5 那边只需要引用一个 js 文件即可。
fairytale110
2020-02-02 15:39:12 +08:00
huiyue
2020-02-02 15:53:31 +08:00
mpaas 了解一下。
geekc3t
2020-02-02 15:55:05 +08:00
phonegap?
geekc3t
2020-02-02 15:56:28 +08:00
cordova 这个
Torpedo
2020-02-02 15:56:30 +08:00
cordova 还是可以的
xiangyuecn
2020-02-02 16:24:41 +08:00
自己撸一个也不是难事,安利一波我的设计模式:
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
xiangyuecn
2020-02-02 16:25:43 +08:00
#7 图还是用 wx1 的好点
但我实际项目中使用的 js 接口样子,调用和定义还算方便:


比如调用定位是这样子的:
jdgui
2020-02-02 18:12:42 +08:00
@xiangyuecn 感谢,获益良多
Harry
2020-02-03 23:47:12 +08:00
同意 7 楼说的。如果你对 js 和 java 都比较熟悉,那么可以自己写一下。一些事件和返回的地方处理起来需要多用心。
如果你也不是使用 react native 的话,那么 https://github.com/turbolinks/turbolinks 这个项目应该可以直接解决你的问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/641616

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX