重新造轮子,使用 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. 境界的提升

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

写在最后

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

4329 次点击
所在节点    分享创造
21 条回复
abmin521
2018-06-02 12:33:55 +08:00
支持 没有开源么
JohnChiu
2018-06-02 12:43:33 +08:00
很强,支持一下
taifus
2018-06-02 12:46:37 +08:00
访问速度还可以 😎
frozenthrone
2018-06-02 14:23:11 +08:00
safari 阅读模式兼容性很差
agoodob
2018-06-02 14:41:24 +08:00
厉害厉害~ 同问 1 楼的开源问题~
waacoo
2018-06-02 14:52:36 +08:00
开源学习下
artandlol
2018-06-02 15:11:08 +08:00
响应挺快的
caviar
2018-06-02 15:39:03 +08:00
想法有趣,支持一下
agdhole
2018-06-02 15:47:47 +08:00
支持,要是能出 Flarum 的源码解析就好了
FindHao
2018-06-02 16:24:16 +08:00
👍
franky_xhl
2018-06-02 21:24:25 +08:00
期待开源,学习一下
GTim
2018-06-03 09:03:49 +08:00
@agdhole 源码具复杂,哈哈
Wichna
2018-06-03 09:59:46 +08:00
我个人业余维护的网站 https://paybase.cn/ 就是基于 Flarum 的。
请问楼主这次重写有采用后端渲染吗?
GTim
2018-06-03 15:03:09 +08:00
@Wichna 哈哈,主题不错

没有,我现在正在逐步的做一件事,就是 seo,把左边的 tag 先使用 Jinja2 先渲染一遍

Mithril 没有后端渲染的第三方扩展出现 ~哭
aiver
2018-06-04 22:00:09 +08:00
👍 期待开源,学习学习
haoxuexiaoyao
2019-02-20 17:47:47 +08:00
@Wichna 您这个网站确实不错 模板有开源的么
Wichna
2019-02-21 11:48:13 +08:00
@haoxuexiaoyao 模板自己设计的,没什么好开源的呀
haoxuexiaoyao
2019-02-21 11:58:56 +08:00
@Wichna 恩啊 前端不懂 哈哈 谢谢回答 已收藏你网站 持续关注
chnyung
2019-07-23 10:32:48 +08:00
@GTim 大佬你这套模板能分享下吗?我是打算装个论坛到 uwamp 里面做笔记用的,你这套模板真的很适合啊,付费也行!
GTim
2019-07-23 14:29:36 +08:00
@chnyung 你想要 css/js 就可以还是需要 html 代码本身。前端 HTML 是通过 React 类似的引擎渲染出来的

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

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

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

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

© 2021 V2EX