重新造轮子,重写 Flarum,发表在 v2ex.com 上的帖子

yufei       6 年, 5 月 前       3650

最近没事,使用 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/ 里各种点击页面看看返回的结果

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

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

收获

要说收获,真的是蛮大的

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

  2. 前后端交互协议?

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

    因为要兼顾缓存

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

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

  3. 境界的提升

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

写在最后

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

3 回复  |  直到 Aug 29, 2021

azhai

#1   •   5 年 前   •  

是否开源啊,我上个月也打算用Flask重写,无奈发现前端无法动手改。 另外flarum极具特色的右侧进度条,还有左侧目录树怎么都去掉了?

yufei

#2   •   5 年 前   •  

你看到的这个已经不是了。我当初重写的时候是根据前端要什么我就返回什么的

Bone

#3   •   3 年, 3 月 前   •  

赞一个

简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.