最近没事,使用 Python 3.6.5 + Flask 1.0.2 重写了 Flarum
访问网址 https://www.twle.cn
Flarum, 这个论坛,想必很多人都知道,很多人都很惊奇
我当初就是这样,很好奇,可是装了很久,总是各种莫名奇妙的出各种 Bug
于是,我就有了重写它的想法了
语言选择
重写之前想了很多语言,比如 Golang 啦,Node 啦, Python 啊, PHP 啦
- Golang 我熟悉,但是,没把握能用半个月的时间重写好
- Node 熟悉,但是,异步 SQL 语句我还是没把我能在半个月内写好
- PHP 既然原版都是 PHP 写的,再用 PHP 写一遍? no
最后就敲定了 Python
框架选择
然后就开始选框架了, Tornado Flask bottle web.py ....
对 Tornado 最熟悉,可当初也不知道怎么相的,就选择了 Flask
选 Flask 的另一个原因是喜欢 Jinja2 ,哎,痛苦的根源开始了
重写过程中的坑
-
对 Mithril 不熟悉,一开始不敢贸然改动前端框架和通讯协议
但这么说呢?有时候就要迎着头皮去改动,反而觉得简单了
用习惯了 Vue 和 React ? 想立马上手 Mithril ,那简直门都没有
不过习惯了之后,就会发现 Vue 和 React 有点复杂了
-
使用 Vue 后还要不要使用 JQuery?
困扰我很久的问题,如果使用 Vue 后还需要使用 JQuery ,那么我前端就不用 Vue 重写了
重写前端,这个工作,想都不敢想,太庞大了
-
看懂 Flarum 的源码?
我觉得就是给我半年时间,我也不一定能把 Flarum 的代码看懂
这也是最近一年以来,越来越不喜欢 PHP 的原因
Flarum 的继承体系太复杂了
-
看懂协议?
协议部分,我一开始没看懂,就跑去 http://discuss.flarum.org.cn/ 里各种点击页面看看返回的结果
要对 @justjavac 说声对不起,有段时间,我都怀疑是不是我点击太多次导致服务器挂了
那段时间我还询问,是不是遭受攻击了呢
收获
要说收获,真的是蛮大的
-
通过折腾 Mithril , 对如何使用 Vue 和 React 构架复杂的页面有了更深入的理解,这种理解不只是框架本身,而是 Flarum 带来的前端知识的变革,组件化所有页面,通过伪继承,达到渗透组件的目的
-
前后端交互协议?
现在几乎应该都用 JSON 作为数据交换格式了把? 但是数据传输协议怎么样设计?目前还是没有很统一的方法
因为要兼顾缓存
如果要兼顾缓存,要怎么设计协议呢?
我不说什么什么协议好,我只是想说 Flarum 提供了一种思路
-
境界的提升
我不知道该怎么表达这货,总之,现在回头看,刚开始重写的时候,简直就是小白一个
写在最后
希望大家轻拍,还有很多系统没有完善,尤其是权限系统