V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jiafaner
V2EX  ›  问与答

历史遗留的前端项目怎么改

  •  
  •   jiafaner · 2019-05-02 11:46:25 +08:00 · 3061 次点击
    这是一个创建于 2037 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在的项目前端是这样的

    每个 url 对应一个 view,服务器端直接 jsp 渲染出来的,用了两种前端框架,都是基于 jquery,引入几十个 js/css 文件,插件一大堆

    老板让我想想办法,看看有没有办法把这种项目重构一下,引入一些现代的 web 技术,这种情况怎么处理合适

    主要想解决大量复制的 css/js 在不同页面间乱引入的问题,并且希望尽量达到已有的功能尽量不变,新开发的功能逐步用新的前端架构替换掉旧的 jquery 的东西,顺便再提高一点开发效率就好了
    16 条回复    2019-05-03 02:56:55 +08:00
    miao666
        1
    miao666  
       2019-05-02 12:06:48 +08:00 via iPhone
    老板才不关心这个,你说的那个老板是你自己吧😹
    murmur
        2
    murmur  
       2019-05-02 12:11:31 +08:00
    除非推倒,不要重构,再烂的项目通过了测试就可以了,重构后 has 要测试的
    jiafaner
        3
    jiafaner  
    OP
       2019-05-02 13:07:14 +08:00
    @miao666 我倒是想当老板,老板为啥不关心这个?
    jiafaner
        4
    jiafaner  
    OP
       2019-05-02 13:15:58 +08:00
    @murmur 项目的情况是这样的,一个老项目,03 年创建的,维护到 09 年左右,客户也不怎么用了,现在突然拿出来,说是领导重视,还能跑起来

    不过说要增加很多功能,老板的意思是原来的开发模式下,我们公司没有专职前端,会花太多精力去搞那些旧的 js,有没有办法在不破坏旧系统的情况下,提高开发效率,

    如果没有增加新功能,就不改过去的东西了,
    如果开发新功能,有没有办法引入新的前端的东西能兼容旧代码,还能提高效率的
    zqx
        5
    zqx  
       2019-05-02 13:16:07 +08:00 via Android
    先做好 jq 插件的模块化,然后慢慢重构将每个功能(url)对应一个节点用 spa 渲染
    jiafaner
        6
    jiafaner  
    OP
       2019-05-02 13:23:54 +08:00
    @zqx 请教,

    每个功能 url 对应的节点用 spa 渲染,那样会不会需要用 vue 初始化很多项目,一个项目对应着一个节点?
    kinghly
        7
    kinghly  
       2019-05-02 15:01:47 +08:00 via Android
    搭套新的,旧的功能 iframe 内嵌进来,新功能直接开发,旧有的小改动小优化就直接改旧。
    JamesR
        8
    JamesR  
       2019-05-02 15:44:28 +08:00
    如果有曾好几个 Bug 要运行 3 个月以上才能被发现并被修复,你无知地重构了,后面有得嗨了。
    JK9993
        9
    JK9993  
       2019-05-02 15:57:55 +08:00
    老的可以先 requirejs 做模块化,新功能用 react/vue
    zqx
        10
    zqx  
       2019-05-02 19:48:14 +08:00 via Android
    @jiafaner
    在 react 里是这样的,每个 url 是一个功能组件渲染到指定 id 节点上,如果是服务端路由的话通过监测 url 变化加载节点
    passerbytiny
        11
    passerbytiny  
       2019-05-02 20:37:37 +08:00 via Android
    jsp 的话,没法单独对前端重构的。后端最少也要重做 Controller/Action 层。

    另外在我的认识里,前端只有重做没有重构,甚至没有保持 UI 不变的重制。
    ryan1996
        12
    ryan1996  
       2019-05-02 20:45:00 +08:00
    原有的项目不动,新功能用新的框架写。例如 www.v2ex.com , 你可以把新功能写在 www.v2ex.com/extends/* 下面,然后配置一下 nginx 把 extends/* 下的都定向到新功能。
    woscaizi
        13
    woscaizi  
       2019-05-02 23:16:23 +08:00 via iPhone
    把 css/js 抽到公共 jsp 中,每个 jsp 按需引入。
    新功能的页面改为 vue/react,后台提供接口。
    MonoLogueChi
        14
    MonoLogueChi  
       2019-05-03 02:20:02 +08:00 via Android
    JSP 没用过,但是我写 asp 基本都是在模板里引入 js 和 css,以后修改起来方便一点
    moyupoi
        15
    moyupoi  
       2019-05-03 02:41:54 +08:00 via iPhone
    老板的意思是在短时间内引入新技术重构,给你的时间不够你重写的,如果重写出问题了,你要背锅,大部分情况下还是量力而行,老板不知道重构意味着什么,也不管会出现什么问题,但你是技术,你得预估工作量,还要满足上面的需求,如果到最后为了展现实力让自己辛苦加班还不捞好,就得不偿失了…
    Dawnki
        16
    Dawnki  
       2019-05-03 02:56:55 +08:00 via iPhone
    后端改成 api 接口,前端用 react/vue 弄 spa
    重构的工程量有点大,可以考虑上面评论老哥说的用 nginx 区分下新旧功能的地址,慢慢重构旧模块
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1068 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 122ms · UTC 20:05 · PVG 04:05 · LAX 12:05 · JFK 15:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.