编写运行在树莓派上的 webapp,,网页端 js 如何与后端 py 代码交互

2019-04-06 20:17:42 +08:00
 XIVN1987

想写一个运行在树莓派上的 app,界面打算用网页开发,这样树莓派就不需要接显示器了

因为 python 比较熟,所以功能后端功能代码打算用 python 写,web 框架用 bottle 或者 Flask,,但网页端的动态界面(如下拉列表、Switch、按钮)肯定要用 js 编写,,这样就需要在 py 和 js 代码间进行通信,传递状态信息

现在用的 Websocket 来做,,比如在网页上点下按钮,,js 就通过 websocket 给 py 发送一条消息,,py 接到消息后处理,,根据处理结果通过 websocket 给 js 发送不同的反馈,,js 再根据反馈更改界面(比如更改按钮上的文字)

这样感觉非常繁琐,,而且很容易造成前端和后端状态不一致

请问有其他更简洁的状态交互方法吗?

4560 次点击
所在节点    Python
30 条回复
littlewey
2019-04-07 09:45:42 +08:00
我刚好在写 py 后端的 websocket server 的理由和你一样🤦‍♂️。 用的是 flask-socketio。
我的做法是 webapp 里用 flask 的地址去 call flask,flask 只是 http RESTful/socketio api server

https://note.siwei.info/project-resource-board-a-scalable-webapp-with-flask-socketio-and-vue-js/
littlewey
2019-04-07 09:47:50 +08:00
lz 如果你想快速开始,可以参考我组织形式,我受到了 flack 的启发,不过我的是 side project。 上边 blog 里有 repo 地址。
XIVN1987
2019-04-07 10:17:40 +08:00
@littlewey
感谢,,学习下
iRiven
2019-04-07 10:41:11 +08:00
我也有类似的区别 我用 grpc,vue.js 配合 ts 比较舒服,如果不是搞前端 一下子学这么多还是很麻烦的
XIVN1987
2019-04-07 10:47:49 +08:00
@iRiven
是啊,写起来比 PyQt 麻烦多了,,
strpbrk
2019-04-07 12:09:33 +08:00
阿贾克斯
eyewater
2019-04-07 14:31:45 +08:00
推荐 Pusher
https://pusher.com/
tairan2006
2019-04-07 17:34:22 +08:00
为啥要拆分前后端…你要是只是为了简洁,逻辑全写 js 里不是最简单么,node 生态不够你用么
Tokin
2019-04-07 21:21:01 +08:00
@XIVN1987 那我暂时也想不出为什么前后端数据会不一致。。。
wyc9296
2019-04-07 23:11:18 +08:00
websocket 要一直双向通信吧; ajax 更简单好用,浏览器一有动作就可以调用后台的 Python,然后返回 json 之类的数据,支持同步或异步传输。
话说楼主你的树莓派是插的 sd 卡么,还是硬盘? sd 卡一直读写坏得快吧?
@XIVN1987

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

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

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

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

© 2021 V2EX