用 Python 实现 Vue.js

2022 年 5 月 27 日
 zcf0508

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

项目地址

Github: pyvue

进度

一些成果


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

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

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

4576 次点击
所在节点    分享创造
21 条回复
zagfai
2022 年 5 月 27 日
用途是?做电脑应用?
zcf0508
2022 年 5 月 27 日
@zagfai 完成之后应该是可以的。

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

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

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

https://study.congcong.us/t/855729

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

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

© 2021 V2EX