重新造轮子,使用 Python + Flask 重写 Flarum

2018-06-02 12:22:37 +08:00
 GTim

最近没事,使用 Python 3.6.5 + Flask 1.0.2 重写了 Flarum

访问网址 https://www.twle.cn

Flarum, 这个论坛,想必很多人都知道,很多人都很惊奇

我当初就是这样,很好奇,可是装了很久,总是各种莫名奇妙的出各种 Bug

于是,我就有了重写它的想法了

语言选择

重写之前想了很多语言,比如 Golang 啦,Node 啦,Python 啊,PHP 啦

  1. Golang 我熟悉,但是,没把握能用半个月的时间重写好
  2. Node 熟悉,但是,异步 SQL 语句我还是没把我能在半个月内写好
  3. PHP 既然原版都是 PHP 写的,再用 PHP 写一遍? no

最后就敲定了 Python

框架选择

然后就开始选框架了,Tornado Flask bottle web.py ....

对 Tornado 最熟悉,可当初也不知道怎么相的,就选择了 Flask

选 Flask 的另一个原因是喜欢 Jinja2,哎,痛苦的根源开始了

重写过程中的坑

  1. 对 Mithril 不熟悉,一开始不敢贸然改动前端框架和通讯协议

    但这么说呢?有时候就要迎着头皮去改动,反而觉得简单了

    用习惯了 Vue 和 React ? 想立马上手 Mithril,那简直门都没有

    不过习惯了之后,就会发现 Vue 和 React 有点复杂了

  2. 使用 Vue 后还要不要使用 JQuery?

    困扰我很久的问题,如果使用 Vue 后还需要使用 JQuery,那么我前端就不用 Vue 重写了

    重写前端,这个工作,想都不敢想,太庞大了

  3. 看懂 Flarum 的源码?

    我觉得就是给我半年时间,我也不一定能把 Flarum 的代码看懂

    这也是最近一年以来,越来越不喜欢 PHP 的原因

    Flarum 的继承体系太复杂了

  4. 看懂协议?

    协议部分,我一开始没看懂,就跑去 http://discuss.flarum.org.cn/ 里各种点击页面看看返回的结果

    以前对 Flarum 的协议一知半解,现在回过头去看,哇塞,也就那样了

    要对 @justjavac 说声对不起,有段时间,我都怀疑是不是我点击太多次导致服务器挂了

    那段时间我还询问,是不是遭受攻击了呢

收获

要说收获,真的是蛮大的

  1. 通过折腾 Mithril, 对如何使用 Vue 和 React 构架复杂的页面有了更深入的理解,这种理解不只是框架本身,而是 Flarum 带来的前端知识的变革,组件化所有页面,通过伪继承,达到渗透组件的目的

  2. 前后端交互协议?

    现在几乎应该都用 JSON 作为数据交换格式了把? 但是数据传输协议怎么样设计?目前还是没有很统一的方法

    因为要兼顾缓存

    如果要兼顾缓存,要怎么设计协议呢?

    我不说什么什么协议好,我只是想说 Flarum 提供了一种思路

  3. 境界的提升

    我不知道该怎么表达这货,总之,现在回头看,刚开始重写的时候,简直就是小白一个

写在最后

希望大家轻拍,还有很多系统没有完善,尤其是权限系统

4330 次点击
所在节点    分享创造
21 条回复
chnyung
2019-07-30 09:41:14 +08:00
@GTim 谢谢大佬!我才看到你的回复,现在已经把 runoob.com 扒的差不多了。

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

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

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

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

© 2021 V2EX