想问一个关于 Vue 设计模式的可能不是问题的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
1YsX1
V2EX    前端开发

想问一个关于 Vue 设计模式的可能不是问题的问题

  •  
  •   1YsX1 2020-05-21 18:48:24 +08:00 1706 次点击
    这是一个创建于 2047 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近写代码时比较想去多思考一下设计模式方面的问题,对于 Vue 开发目前有这样一个想法,希望能够有前辈进行指点。

    比如我现在需要实现一个业务管理系统的客户管理功能,对于客户的列表展示,有两个页面非常接近但是又不大相同。

    1.客户管理页面的客户列表

    右上角可以添加新客户 点击每一个客户,要弹出客户详情页,可以对客户信息进行修改 

    2.订单管理页面的客户选择

    右上角没有添加新客户 点击客户后要返回并传值给上一个页面 

    举得例子可能不恰当,因为一个客户列表这样的功能太小了。但是我想说的就是对于一些相对复杂的界面,两个界面的功能大体上一致,但是具体的细节上是不一样的。

    对于这样的页面,我认为可能的有两种编码措施:

    1.两个页面分别写在两个文件里 2.写在同一个文件里然后访问页面时进行 mode 的选择以确定跳转方式 

    个人是比较偏向于选择第一种方式的,我认为这样可能可以让代码更为清晰。 但是不知道这里如果对于很大的工程来说,每一个页面都是一个新的文件,会不会增大最终的 js 文件然后影响页面的速度?

    希望能够有前辈进行指点,谢谢!

    5 条回复    2020-05-22 18:38:16 +08:00
    Twinkle
        1
    Twinkle  
       2020-05-22 09:36:08 +08:00 via Android
    路由上做 code splitting,你的担忧就不存在了
    SilentDepth
        2
    SilentDepth  
       2020-05-22 14:12:41 +08:00
    针对你提到的需求场景,要先分析两个页面的近似是来自于业务的重合还是单纯的巧合。如果是巧合,那不属于逻辑复用的场景,分开写;如果是重合业务,提取差异点,用开关状态来控制内容。

    如果拆分的页面(模块)多了,页面性能影响不大(按需加载可以减少传输数据量),但工程编译时间会上升。
    1YsX1
        3
    1YsX1  
    OP
       2020-05-22 16:06:13 +08:00
    @Twinkle 谢谢,但是我还在思考即使用了 code splitting,如果是同一个页面,是不是下载一次就好?
    因为我认为相似的页面里面,其中体积稍大的资源可能都是重复的,不同的只是一些标题,返回的 url 等一些几个字节的区别。
    然后拆开的话就要把类似的页面下载两次呢?
    1YsX1
        4
    1YsX1  
    OP
       2020-05-22 16:12:30 +08:00
    @SilentDepth 谢谢,目前在我的理解上是不同的业务需要去调用相同的一个基本业务的页面。然后这个基本业务可能需要修改的就是 title,back,next 等信息。主体部分都是一致的。但是直观感受写在同一个文件里节省下来的一点大小与代码的可读性上来讲,好像是可以忽略不计。
    Twinkle
        5
    Twinkle  
       2020-05-22 18:38:16 +08:00 via Android
    @1YsX1 拆开肯定是要下两次的,还是要根据自己需求来看到底拆不拆,或者两种方式都去写一下试试。或者折中一下,ui 部分提取出一个 layout,逻辑不同的部分再做分拆,都可以试试。
    ps:性能最好等写完了再做优化,不要提前规划,我是这么想的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5275 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 09:11 PVG 17:11 LAX 01:11 JFK 04:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86