V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
starsriver
V2EX  ›  PHP

Discuz! X 重构,意见征集

  •  2
     
  •   starsriver · 2020-10-04 10:59:19 +08:00 · 9457 次点击
    这是一个创建于 1546 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是体验到了贴吧的恶心之处。唯一一次在贴吧发的贴( https://tieba.baidu.com/p/5705642823?pid=119789505898&cid=0&red_tag=2188154789#119789505898

    前言

    • 首先指出,我并不是计算机专业或者软件专业。我的学术方向是传感器。我所做的东西在大家眼里或许没有任何技术含量。

    • 本科阶段我用了、试了一些大家熟知的框架,产品,也自己从零开始给学校部门写过 CMS 。或许是一直以来独自做事的风格,那些所谓的“高性能”框架并没有给我留下很多深刻的印象,composer 下缝合怪试开发或许不适合我。反倒是这个功能基本完整的 Dz 让我一直坚持了下来。

    • 我不是非常想讨论性能问题,既然选择了 php, 在我看来,那是钱多钱少的问题。

    • 我不想拿 Dz 和其他产品对比,众所周知,程序和程序的体质不能一概而论。

    基本叙述

    • 我独立重构 Dz 前端已四年,但是严格来说可能两年都不到。同时用到的"技术栈"也并不是高大上的东西,"轻喷"。

    • 期间完成了大部分的结构更改和 BUG 修复,而目前依旧有不少细节没有进行打磨处理。

    • 如今我升至研究生,由于学术要求,没有了本科阶段充足的时间来进行持续开发,因此我发帖来咨询一下各位的看法与建议,以及是否有不求回报的意愿参与到开发之中.

    • 基于 dz3.4 的四年断断续续的更新,我基本上清理了 dz 对旧浏览器的支持,数据库与核心程序均进行了不同程度的修改。所修改之处的代码风格严格按照 W3C 标准进行。

    个人态度

    • 我不知道 Dz 的商业授权对商业是如何定义的,见识过伟大的祖国法律体系下对商业授权的各种偷换概念操作,我还是小心翼翼为好
    • 郑重声明,我的个人开发并不属于任何商业用途形式,也从未以此获利。

    最后我想说,重构 dz 的难度不亚于完全推翻。前人十几年所创造的精华与糟粕需要开发者精心斟酌保留与否。我个人追求的匠人精神和闭门造车的能力应当是每一位开发者所具备的。我提倡开发者能够将真心投入进去,敢于应用新技术和标准的同时,要时刻记得自己创造的东西最终目的是为人而服务。

    我想说的就这些,欢迎留言。

    第 1 条附言  ·  2020-10-04 15:19:29 +08:00
    Q 群:796690533
    第 2 条附言  ·  2020-10-05 10:15:36 +08:00
    因为是建议征集,所以我不希望大家把自己的个人感情和对社会的不满带到评论中去。请三思
    70 条回复    2020-11-27 17:16:20 +08:00
    nomansky
        1
    nomansky  
       2020-10-04 11:01:23 +08:00
    赞,不过 dz 的漏洞太多了
    Telegram
        2
    Telegram  
       2020-10-04 11:07:17 +08:00
    @nomansky #1 人怕出名猪怕壮,懂吧。
    因为 discuz 当年占有率遥遥领先,自然很多人去挖洞,和 win 系统一样,不是因为 linux 漏洞少,因为挖 win 漏洞有利可图啊。
    CRight
        3
    CRight  
       2020-10-04 11:07:41 +08:00
    改得完全看不出来了
    starsriver
        4
    starsriver  
    OP
       2020-10-04 11:09:39 +08:00
    @nomansky
    几年里我对 Dz 源码的摸索下,人们对 dz 的 bug 多的主观看法 主要是因为 dz 对兼容性要求过于苛刻导致的不兼容,所谓事与愿违。
    大部分所谓的 Bug 都是模板的混乱造成的,而我也在不断更新模板渲染模式。
    为了让开发更加简单,我修改后的 dz 只支持 php7.0 以上。
    starsriver
        5
    starsriver  
    OP
       2020-10-04 11:10:00 +08:00   ❤️ 1
    @CRight 可以说是重构
    youla
        6
    youla  
       2020-10-04 11:11:00 +08:00
    蛤,又一个二刺螈,界面感觉还不错,重构完了吗?看到有些地方样式好像还有点问题。
    starsriver
        7
    starsriver  
    OP
       2020-10-04 11:12:03 +08:00
    @youla 不是有些地方,而是不少地方都没完成。。。所以才征求意见。
    pC0oc4EbCSsJUy4W
        8
    pC0oc4EbCSsJUy4W  
       2020-10-04 11:13:14 +08:00
    哈哈,加油,可以自己造轮子玩啊
    youla
        9
    youla  
       2020-10-04 11:16:21 +08:00
    @starsriver 是前后端分离的吗,刚学 php 时,看到好多项目都是 php 代码穿插着 html,不知道现在还是不是这样,改那种代码起真的很痛苦。
    starsriver
        10
    starsriver  
    OP
       2020-10-04 11:19:07 +08:00
    @youla
    目前没有分离前后端的意图,重构的 dz 本质上依旧是 html 和 php 混写

    但是!!!我已经修改了大部分的模板,html 和 php 基本上是分开来写的。
    Szhi
        11
    Szhi  
       2020-10-04 11:20:42 +08:00
    别重构了,自己造一个吧。
    starsriver
        12
    starsriver  
    OP
       2020-10-04 11:24:00 +08:00
    @Szhi 请认真审题。。。
    kaiki
        13
    kaiki  
       2020-10-04 11:27:02 +08:00   ❤️ 2
    总的来说没有什么新东西拿得出手,不足以拯救 DZ 以及论坛这个模式。
    前端上都能找到其他网站的影子,但是风格不够统一,体验上还是有所欠佳。
    就当是累积经验吧,DZ 练手也挺好。
    starsriver
        14
    starsriver  
    OP
       2020-10-04 11:28:35 +08:00
    @Szhi 不严谨的来说,这也基本上属于重新做了。
    starsriver
        15
    starsriver  
    OP
       2020-10-04 11:30:11 +08:00
    @kaiki 风格总在探索。在没有设计稿的情况下就是这样。
    ciaoly
        16
    ciaoly  
       2020-10-04 11:30:41 +08:00 via Android
    @Telegram 你这说法感觉就像 Linux“占有率低,挖它的漏洞无利可图”一样。
    Linux:我占有率低,嗯???
    hellov22ex
        17
    hellov22ex  
       2020-10-04 11:31:32 +08:00 via Android
    不建议重构这个东西。太复杂太庞大了,你还是去弄一点轻量级的吧。
    starsriver
        18
    starsriver  
    OP
       2020-10-04 11:32:24 +08:00
    @hellov22ex 请认真审题。。
    pallas
        19
    pallas  
       2020-10-04 11:37:16 +08:00 via iPhone
    个人意见,dzx 完全不值得重构,个人认为现在 php8 php7 也严重偏离了初心,如果我来重构我可能会选择 dz6 以前的版本。当然 LZ 愿意把代码放到 github 上,我倒是愿意贡献点代码或者花点时间帮 LZ 修补下漏洞,打造一个最安全的 dzx 。
    starsriver
        20
    starsriver  
    OP
       2020-10-04 11:45:15 +08:00
    @pallas 尽量。github 上风险是有的。我不知道腾讯会干什么恶心事,所以代码就放在 gitlab 上,同时方便 pipline 自动部署。

    如果有意愿,可以加个群,讨论一下是否搁 github
    Telegram
        21
    Telegram  
       2020-10-04 11:47:09 +08:00
    @ciaoly #16 消费者市场占有率肯定 win 遥遥领先吧,linux 最多是服务器市场大
    Yourshell
        22
    Yourshell  
       2020-10-04 11:59:29 +08:00
    所谓为毛还要去修一个破轮子徒增烦恼呢?
    hoyixi
        23
    hoyixi  
       2020-10-04 12:13:35 +08:00
    这货的官方,不是在开发优先适配移动端的新版嘛
    iConnect
        24
    iConnect  
       2020-10-04 12:21:05 +08:00 via Android
    前端风格不错,建议楼主直接重构吧,后端的工作量并不大,应该比你前端花的时间少
    starsriver
        25
    starsriver  
    OP
       2020-10-04 12:26:19 +08:00
    @hoyixi 新的 dzq 可以说只是一个宣传腾讯云的工具,实用价值不大。

    @iConnect dz 的后台逻辑会逐渐进行修改。主要是先把大方向确定下来才能做后期工作。以及,认真审题。。
    danhahaha
        26
    danhahaha  
       2020-10-04 12:31:25 +08:00
    说实话,你这个其实只是改的模板吧? dz 实际核心部分要是重构的话,工作量可以重写一套了,功能结构远超预期的。dz 官方去年也开始从新搞了,现在还没什么头绪呢
    starsriver
        27
    starsriver  
    OP
       2020-10-04 12:34:06 +08:00
    @danhahaha 核心部分也在缓慢进展,不能只看表面。后端还是比较成熟的。修改幅度没有前端大。
    danhahaha
        28
    danhahaha  
       2020-10-04 12:40:32 +08:00
    @starsriver 加油呀,dz 的后端不好改,整个网络没有任何文档,别说后端,插件开发文档都寥寥无几
    starsriver
        29
    starsriver  
    OP
       2020-10-04 12:45:22 +08:00
    @pallas github 可以看这里。这里面没有安装程序和数据库,所以只能看看代码。由于数据库我也按需做了修改,所以直接替换 Dz 程序也是不能用。。

    https://github.com/StarsRiver-der/starsriver.club 。数据库我可以单独提供。
    starsriver
        30
    starsriver  
    OP
       2020-10-04 12:46:47 +08:00
    @danhahaha 后端结构实际上比较简单。。要比目前的框架容易理解。由于执行路径最短,所以效率也比较高。
    yc8332
        31
    yc8332  
       2020-10-04 13:00:39 +08:00
    前端应该是搞套模板的套路吧。
    starsriver
        32
    starsriver  
    OP
       2020-10-04 13:02:10 +08:00
    @yc8332 不需要你审阅代码,打开 F12 看看就知道了。
    tuobatian
        33
    tuobatian  
       2020-10-04 13:21:25 +08:00
    Discuz 团队今年新开 Discuz!Q,全新框架做的,到时候估计会有大量 X 迁移到 Q 。
    官网: https://discuz.com/
    社区: https://discuz.chat/
    文档: https://discuz.com/docs/
    看了楼主的留言板设计,卡片式不错。
    starsriver
        34
    starsriver  
    OP
       2020-10-04 13:28:57 +08:00 via Android
    @tuobatian dzx 很难迁移到 q,我是比较讨厌 q 的运行模式。有 flarum 为什么要用 q 呢?

    我认为,dzx 的模式利于数据聚合,目前 sns 模式缺少这种聚合能力。
    xiebruce
        35
    xiebruce  
       2020-10-04 13:35:54 +08:00
    支持
    tuobatian
        36
    tuobatian  
       2020-10-04 13:42:53 +08:00
    @starsriver #34
    存在即合理,Q 主要是小圈子,看得出主战场是小程序,还是微信生态圈,腾讯服务器。
    你花这么多精力重构,试试 Laravel,后台考虑下 dcatadmin ( http://www.dcatadmin.com/)
    golang 虽然火,但是 Laravel 生态圈比较完善,开源的东西多,不需要重复造轮子。
    baiduyixia
        37
    baiduyixia  
       2020-10-04 13:53:51 +08:00
    噗 这改得花里胡哨,还不如原来的 x
    natashahollyz
        38
    natashahollyz  
       2020-10-04 13:56:12 +08:00 via iPhone
    @Telegram 哪个病毒多,哪个系统市占率就大
    starsriver
        39
    starsriver  
    OP
       2020-10-04 14:02:17 +08:00
    @tuobatian 四年说长不长,说短不短。这几年里 laravel 这些主流框架和产品我都是用过的,也拿来做过项目,也想过很多。最后还是选择了 dz, 一个是功能完整,第二就是版本迭代。那些半年一次的更新,轮子的更换,注定不适合长期发展。开源的东西一方面有他的好处,但是问题也确确实实存在。
    clf
        40
    clf  
       2020-10-04 14:28:45 +08:00
    个人建议还是参考现有的很多论坛的设计,自己重新弄一个跨平台的。

    现在能活下来的论坛其实不多,比较大的 DZ 论坛稳妥点基本都是直接花钱买服务进行版本迁移,或者是稳定在一个版本懒得动。新兴的论坛也不会上 dz,Flarum 使用者比较多。

    另外就是移动端的问题,移动互联网时代,对于很多公司来说,移动端 App 、小程序等比起 PC 端 Web 页面更加重要,即便它是论坛的形式。
    mayx
        41
    mayx  
       2020-10-04 14:30:10 +08:00 via Android   ❤️ 2
    你这个只能叫魔改,好多核心部分还是 discuzx 的
    x86
        42
    x86  
       2020-10-04 14:36:32 +08:00 via iPhone
    dz 主要是易上手拓展插件方便
    starsriver
        43
    starsriver  
    OP
       2020-10-04 14:42:37 +08:00
    @lychs1998 请认真审题。。

    1. 论坛还是挺多的。
    2. 论坛的作用是辅助,并不是主要数据的集中区
    3. APP 这部分当然还是原生的好,小程序可以慢慢接入。问题在于,学会跑之前要知道怎么站起来。。

    4. 论坛设计千篇一律,而且十几年了人的网络需求一直没有变,变的是实现方法。
    5. 我个人没有很多时间,重构相比于重写能省下大量构思时间。
    shakukansp
        44
    shakukansp  
       2020-10-04 14:43:37 +08:00
    前端没设计做成这样我是服的
    加油
    natashahollyz
        45
    natashahollyz  
       2020-10-04 16:23:20 +08:00
    首页打不开。。。一直在 loading
    starsriver
        46
    starsriver  
    OP
       2020-10-04 16:35:18 +08:00
    @natashahollyz 试试用 chrome 打开。
    falcon05
        47
    falcon05  
       2020-10-04 16:36:35 +08:00 via iPhone
    改完之前的插件还能使用吗?
    starsriver
        48
    starsriver  
    OP
       2020-10-04 16:38:37 +08:00
    @falcon05 之前? 之后? 倒是能用,可能功能上不是很搭。
    natashahollyz
        49
    natashahollyz  
       2020-10-04 17:11:06 +08:00
    @starsriver Google Chrome 已是最新版本
    版本 85.0.4183.121 (正式版本) ( 64 位)
    stevenhawking
        50
    stevenhawking  
       2020-10-04 17:18:06 +08:00
    用 Discuz Q 吧
    starsriver
        51
    starsriver  
    OP
       2020-10-04 17:51:05 +08:00
    @natashahollyz 可以试试用其他网络。我走的联通宽带,js 文件下载不下来是会出现无限 loading 问题。
    angryfish
        52
    angryfish  
       2020-10-04 18:18:10 +08:00 via iPhone
    论坛的话,国内不好搞啊,各种限制。
    vfxx
        53
    vfxx  
       2020-10-04 18:23:20 +08:00
    我的首页也是无限 loading,感觉 xiuno 的体验是很好的,可惜作者弃楼跑了,支持 lz 的热爱。
    starsriver
        54
    starsriver  
    OP
       2020-10-04 18:46:10 +08:00
    @vfxx 有的地方不共网,所以会无限 loading 。。。这个是网络问题,可以开手机流量试试
    RickyC
        55
    RickyC  
       2020-10-04 19:55:27 +08:00
    听不懂你说甚么. 上来就长篇大论, 没时间看
    starsriver
        56
    starsriver  
    OP
       2020-10-04 20:13:57 +08:00
    @RickyC 长篇大论? 那你是没见过 10 万词的外文论文了
    guanhui07
        57
    guanhui07  
       2020-10-04 20:18:44 +08:00
    重新造了一个..
    hellov22ex
        58
    hellov22ex  
       2020-10-04 20:26:30 +08:00
    @starsriver 我知道所以这么说,这个东西的很多设计、思想是很老以前的东西,你折腾这些,不如想办法搞个 C++的论坛
    starsriver
        59
    starsriver  
    OP
       2020-10-04 20:45:44 +08:00
    @hellov22ex 不瞒你说,真正上手开发后实现一个功能所有的逻辑都是一样的,只不过换了一种方法。。就是因为我尝试了很多东西,最后才决定用 dz 的。

    1. 拿 c++写论坛的难度相当于重新写一套适合做 web 的编程语言
    2. 思想这个东西,百年来其实变化不大。
    3. 设计没有老不老,只有对不对胃口,gitlab 用 ror 做不依旧几百万 star, 你能说他老吗?
    4. 时间成本,这个最重要。去一个像素一个像素琢磨一套 ui,是个人都会疯。。。
    msg7086
        60
    msg7086  
       2020-10-05 01:44:21 +08:00 via Android
    Ermmm Rails 可是各大框架抄袭的标杆啊,不能说老吧…
    当时做出来那可是直接把网站开发技术往后推进了很多年了。

    不过说实话呢,直接改 dz 我也不看好。第一是版权是别人的,你改了 99%的代码也只能算衍生作品。从头写的话版权就是你的,你想卖钱就卖钱,想开源就开源,可以自主控制。第二是原来的程序历史包袱太重了,如果本来就要大规模重写重构,那从崭新的项目开始会比较好。

    其实你现在依然可以重新开始。从头搭起框架然后把你自己重构的代码搬过去就行了。当然最终的决定还是你来做。毕竟论坛早就已经不是一个大众平台了,要么是专业性很强的平台(例如技术交流,又或者是品牌客服等),要么就是一些特别老牌有很长历史的论坛。毕竟以前论坛的大头都在水区,现在还有多少人去论坛水啊。微博不香吗? QQ 群不香吗?
    kangsheng9527
        61
    kangsheng9527  
       2020-10-05 05:18:14 +08:00
    php 已经不适合参与互联网竞争

    其他语言轻而易举做一个带 p2p 功能的论坛

    ---------------------------------------康生 分界线-------------------------------------------

    国内互联网招聘 php 那些公司,我若掌权全部弄死,一个不留

    国内编程教育不从 c 或者汇编起步的,而是从 java 起步的,我若掌权全部弄死,一个不留
    starsriver
        62
    starsriver  
    OP
       2020-10-05 10:14:47 +08:00
    @msg7086
    当然,如果我要做水坛,我为什么要花时间来投入到 dz 中。
    目的肯定不在于此。适合做社区的程序多了去,我也有能力自己写。
    也有一部分是我对社区的怀旧情感在内。


    @kangsheng9527
    请认真审题。
    工具存在即有可用之处,剪刀钳子各有所长。我的目的不在于用技术来竞争,我说了我是电科-传感器方向,没必要在计算机语言这里纠结。
    此外我虽然不是内行,但四年里也见过形形色色的企业和公司,我敢保证,没有一家不是见钱眼开的。个人情感永远只能排在利益之后。
    hellov22ex
        63
    hellov22ex  
       2020-10-05 10:29:53 +08:00   ❤️ 1
    @starsriver
    1. 拿 c++写论坛的难度相当于重新写一套适合做 web 的编程语言
    [不是让你连服务器都写,依托 Nginx 或者 apache 这种做好的服务器写,这样子难度就极度下降了,不过语言选择问题不大,语言只是个表达方式,和计算机交流的中介,这个你看着办就行,PHP 我觉得就很好,用起来整个人很轻松的感觉]
    2. 思想这个东西,百年来其实变化不大。
    [思想这个东西,百年来变化很大,面向对象和面向过程就是个简单的例子,还有就是 MVC 之类的,一些原则性的东西变化不大,变化大的是如何实现,比如各类功能以插件形势加载还是以本身的模块载入,这种思想是不变的,但是一个插件如何更好更优的实现,这种东西变化很大]
    3. 设计没有老不老,只有对不对胃口,gitlab 用 ror 做不依旧几百万 star, 你能说他老吗?
    [设计会过去,详见第二天,面向对象面向过程]
    4. 时间成本,这个最重要。去一个像素一个像素琢磨一套 ui,是个人都会疯。。。
    [UI 部分我也很蛋疼,这部分我建议你用些免费素材,比如这个论坛风格的,这些很多有成套免费的。]
    eagleweb
        64
    eagleweb  
       2020-10-05 12:07:15 +08:00
    楼主做了一个很多人不看好的项目啊……
    那么何苦来征求意见呢,其实自己做下来开心就好。

    否则不就是和别人争辩良久,反而耽误了项目进程吗(笑
    starsriver
        65
    starsriver  
    OP
       2020-10-05 12:37:52 +08:00 via Android
    @eagleweb 没错(笑
    starsriver
        66
    starsriver  
    OP
       2020-10-05 21:53:27 +08:00
    @hellov22ex

    1-r. c++写一个编译语言没说要包括服务器...
    2-r. 语义有误请谅解,我所指的思想其实是用户需求方面的思想,对于开发模式我更喜欢称之为·方法·
    3-r. 设计这个东西不好说...哪个好用用哪个... 银行系统那一套汇编...依旧用的好好的...
    4-r. UI 主要是图个个性化,没有 custom 的要求,那就不存在设计师这个行业了。。要说 UI,google metal 那一套挺好的。
    starsriver
        67
    starsriver  
    OP
       2020-10-05 21:55:02 +08:00
    @hellov22ex 手误 matelial
    hellov22ex
        68
    hellov22ex  
       2020-10-06 12:05:42 +08:00
    @starsriver
    1 、这个看着办就行,有好用的就用好用的,比如 apache 很多人觉得不好用去用 Nginx,但是大部分这么想的沙雕 apache 都用不透的。
    2 、你如果说‘方法’,那还可以说变化一些地方不大,你如果说需求……啥时候你那边能获得到别人的需求变多了会发现,连一个用户登录状态的判断都是要绞尽脑汁的蛋疼了。
    3/4 、UI 这个东西建议和需求捆在一起,谷歌那一套外观不错,但是一些核心东西不是能通用所有他们认为的移动平台,更别提全平台了。UI 的设计不比后台麻烦,虽然它的定向感觉比后台轻松,但是那是高度成功后的微调轻松,前期起步很难的。就比如我现在给你回复的输入框,V2 已经更新了很多版本了,和当初的完全不一样。
    lixuda
        69
    lixuda  
       2020-10-08 15:46:24 +08:00
    Discuz 数据库索引优化下,php html 分离,套个 php 框架。如果只是前端改下,感觉意义不大。
    jdhg
        70
    jdhg  
       2020-11-27 17:16:20 +08:00
    重构不容易呀,加油楼主
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2576 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:33 · PVG 18:33 · LAX 02:33 · JFK 05:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.