V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
GTim
V2EX  ›  分享创造

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

  •  3
     
  •   GTim · 2018-06-02 12:22:37 +08:00 · 4296 次点击
    这是一个创建于 2352 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近没事,使用 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. 境界的提升

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

    写在最后

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

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

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

    Mithril 没有后端渲染的第三方扩展出现 ~哭
    aiver
        15
    aiver  
       2018-06-04 22:00:09 +08:00
    👍 期待开源,学习学习
    haoxuexiaoyao
        16
    haoxuexiaoyao  
       2019-02-20 17:47:47 +08:00
    @Wichna 您这个网站确实不错 模板有开源的么
    Wichna
        17
    Wichna  
       2019-02-21 11:48:13 +08:00
    @haoxuexiaoyao 模板自己设计的,没什么好开源的呀
    haoxuexiaoyao
        18
    haoxuexiaoyao  
       2019-02-21 11:58:56 +08:00
    @Wichna 恩啊 前端不懂 哈哈 谢谢回答 已收藏你网站 持续关注
    chnyung
        19
    chnyung  
       2019-07-23 10:32:48 +08:00
    @GTim 大佬你这套模板能分享下吗?我是打算装个论坛到 uwamp 里面做笔记用的,你这套模板真的很适合啊,付费也行!
    GTim
        20
    GTim  
    OP
       2019-07-23 14:29:36 +08:00
    @chnyung 你想要 css/js 就可以还是需要 html 代码本身。前端 HTML 是通过 React 类似的引擎渲染出来的
    chnyung
        21
    chnyung  
       2019-07-30 09:41:14 +08:00
    @GTim 谢谢大佬!我才看到你的回复,现在已经把 runoob.com 扒的差不多了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2590 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:39 · PVG 10:39 · LAX 18:39 · JFK 21:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.