用 Python 实现 Vue.js

2022-05-27 18:49:58 +08:00
 zcf0508

本项目是按照霍春阳的 Vue.js 设计与实现,用 Python 实现其中的相关内容。

项目地址

Github: pyvue

进度

一些成果


这是隔离在家期间开发的项目,初步完成了一些设想的功能,距离完成还有很多的工作,如果大家对这个项目感兴趣,欢迎 watch 和 star ,也欢迎大家提 issues 和 pr 。

目前完成的 Renderer 还是个半成品,还需要设计 diff 算法来优化组件的更新。 再之后需要设计编译器和解码器,让项目能够以类似 Vue.js 的 SFC 模式进行开发。

最后感谢大家的关心和支持~

3875 次点击
所在节点    分享创造
21 条回复
zagfai
2022-05-27 19:45:57 +08:00
用途是?做电脑应用?
zcf0508
2022-05-27 19:48:55 +08:00
@zagfai 完成之后应该是可以的。

而且和 Vue.js 一样,渲染引擎是可以换的,但是我不清楚 python 的其它 UI 库,目前用的 PyQt ,拿来做桌面应用应该会比 electron 性能好一些。不过好像 PyQt 做出来的不咋好看。
jolanyu
2022-05-27 19:50:27 +08:00
pyqt 能不能做点像组件库一样的东西
zcf0508
2022-05-27 20:14:03 +08:00
@jolanyu 之前有关注到一个叫 Edifice 的库,看介绍感觉样式挺好看的,后面可能整合一下试试。

https://github.com/fding/pyedifice
iamzuoxinyu
2022-05-27 20:19:07 +08:00
vue native?
zcf0508
2022-05-27 20:25:10 +08:00
@iamzuoxinyu 查了下好像已经不更新了。因为渲染引擎这块是独立的,和 Vue.js 一样,所以按理只要更换其它平台的渲染引擎,应该就可以跨端了。
iamzuoxinyu
2022-05-27 20:30:41 +08:00
还真有叫 vue native 的东西啊...我是觉得你这项目跟 rn 思路一样,可能 rn 的话实现起来会更简单一些。
zcf0508
2022-05-27 20:33:56 +08:00
@iamzuoxinyu 是的,从 SFC/jsx -> vdom -> dom 这个思路应该都差不多。
sujin190
2022-05-27 20:39:40 +08:00
其实想说 python 就应该用 python ,用啥字典啊,看起来费劲查起错来也费劲,你看 tensorfow 这种,抽象算法运行在非 python 引擎上也一样好好的用 python 语法多舒服,别照着表面画猫啊,一个好的语法、结构设计绝对是项目成功的一半
yaphets666
2022-05-27 20:41:28 +08:00
牛批
zcf0508
2022-05-27 20:44:16 +08:00
@sujin190 是的,我也发现了,现在用字典写起来可难受了,后面有机会重构会写得更 Pythonic 一点。
iamzuoxinyu
2022-05-27 20:52:01 +08:00
@zcf0508 不过说实话我不觉得用 pythons 实现有啥太大的优势,比如你这样写会缺少类型约束啥的,样式也是个大坑…而且看起来有点像 QML ?后续还会引入模板支持吗? Qt 本身也有 mvvm 支持,不过好像不太受欢迎的样子。
嘛,我也是胡诌一通,你按你的思路写就是。
zcf0508
2022-05-27 20:56:28 +08:00
@iamzuoxinyu 其实最开始是因为很多 tf 的模型都没有 tfjs 的版本,自己转的话,输入和输出适配又是大问题。如果直接用 python 写界面,那就简单了。
lchynn
2022-05-28 14:55:29 +08:00
能不能用 pyscript 这样的 wasm ? 做个 python for Web 的方便开发的前端框架算了。
zcf0508
2022-05-28 15:12:56 +08:00
@lchynn 这何必呢,如果主要在网页端用,那直接用 js 写,然后用 pyscript 跑 python 相关的就好了。
CokeMine
2022-05-28 17:33:22 +08:00
有趣
jerry4718
2022-05-29 01:42:40 +08:00
建议 goscript 也提上日程🥲
yunyuyuan
2022-05-29 12:41:15 +08:00
吐槽一下,我觉得之所以 electron 很火,或者说 web 很火,最重要的原因是写 web 很轻松,css ,html 可以快速地描述 UI ,而 vue 作为 js 的加强,反而不是最具 web 特色的。如果 OP 能实现 html + css + python ,那着实牛逼
GuguDan
2022-05-31 09:35:43 +08:00
zcf0508
2022-05-31 17:17:21 +08:00
追加了一个声名式组件的测试

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

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

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

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

© 2021 V2EX