nobuger
V2EX  ›  问与答

几百个属性长表的前端展示方法

  •  1
     
  •   nobuger · Aug 5, 2020 · 5149 views
    This topic created in 2283 days ago, the information mentioned may be changed or developed.

    目前有业务需求是网页端展示一个很长的表,大概 3 百个表属性,内容比较多,用户打开这个也页面估计会卡慢。

    请问通过什么解决方法可以让这种类型的网页打开比较流畅呢,有没有什么比较好的实践?

    数据库操作涉及很多表,因为这些属性都是分开存储的,通过业务 ID 关联。

    自己想到的方法可不可以参考瀑布流,做一个横向的瀑布流,用户往右拖动滚动条可以自动加载数据。问题是这种懒加载一般用于图片,用于表单、还是横向的可行性?

    有没有比较好的方法用于很多属性的表展示呢,求教啊

    44 replies  •  2020-08-06 10:18:11 +08:00
    nobuger
    nobuger
    OP
    Aug 5, 2020
    1
    前端使用的 VUE
    nobuger
    nobuger
    OP
    Aug 5, 2020
    2
    因为太小儿科了所以没人吗 =..=
    qiayue
    qiayue
    Aug 5, 2020
    3
    根据实际需求来,这个页面是给谁看的,是否需要每次都看 300 列数据?
    wingtao
    wingtao
    Aug 5, 2020
    4
    分页、懒加载、虚拟渲染都可以
    MrTreasure
    MrTreasure
    Aug 5, 2020
    5
    不要一次性全部加在。前端做一个筛选,把要展示的属性筛选出来,表格只展示这些。
    用户大概率不会一次看完 300 个属性,看的最多的是自己关注的,本地再做一个缓存,缓存上次选择的属性
    BreadKiller
    BreadKiller
    Aug 5, 2020
    6
    可以只显示某几个关键列,然后最右边用详情按钮点开弹窗?
    或者可以自定义表头,让用户选择需要查看的信息
    KuroNekoFan
    KuroNekoFan
    Aug 5, 2020 via iPhone
    7
    我觉得滚动加载长表,尤其是桌面端,真的是个很脑残的产品设计,虽然也不是没办法解决你说的问题(虚拟表什么的,ui 框架应该都内置了)
    rabbbit
    rabbbit
    Aug 5, 2020
    8
    这个多没人会看, 留一些关键的其他的按类分页 /改成选项卡
    rabbbit
    rabbbit
    Aug 5, 2020
    9
    这么多没人会看, 留一些关键的其他的按类分页 /改成选项卡
    nobuger
    nobuger
    OP
    Aug 5, 2020
    10
    @qiayue 是一些设计数据,很多,确实是一次都要展示出来
    en20
    en20
    Aug 5, 2020
    11
    你说的是超大列表, 可视区渲染吧. vue-virtual-scroll-list 看一下应该是你需要的
    nobuger
    nobuger
    OP
    Aug 5, 2020
    12
    @en20 是数据属性很多,不是很多条数据
    nobuger
    nobuger
    OP
    Aug 5, 2020
    13
    nobuger
    nobuger
    OP
    Aug 5, 2020
    14
    @rabbbit 属性不太好分类
    whypool
    whypool
    Aug 5, 2020
    15
    分类展示,sku 啥的
    nobuger
    nobuger
    OP
    Aug 5, 2020
    16
    @KuroNekoFan 我说的是属性很多,是横向的滚动加载,也可以吗
    NotNil1
    NotNil1
    Aug 5, 2020❤️1
    17
    详细追业务关注哪些,根绝业务需求,给出多个透视图,多个页面
    rabbbit
    rabbbit
    Aug 5, 2020
    18
    @nobuger
    按 a ~ z 26 个单词 /拼音首字母分类 🐶
    wangxiaoaer
    wangxiaoaer
    Aug 5, 2020
    19
    每个表格对应前端的一个表单,用户激活再渲染这个表单。页面首次进入只加入默认的关键表单。
    sunjourney
    sunjourney
    Aug 5, 2020
    20
    用户自己 set 要看的 key
    sillydaddy
    sillydaddy
    Aug 5, 2020 via Android
    21
    @nobuger “不是很多条数据”,如果是这样的话,可以先测一下实际的性能表现吧?如果没问题那就不用改啦
    qiayue
    qiayue
    Aug 5, 2020
    22
    没有谁的肉眼能够一次性看完全 300 个属性,所以你的实现也不应该是一次把 300 个属性全部展示出来。
    redbuck
    redbuck
    Aug 5, 2020
    23
    横向一样能搞懒加载,可以用 MutationObserver.

    数据多的话,还是用虚拟卷轴之类的.

    另外,如果数据不需要响应,记得 freeze 一下.
    libook
    libook
    Aug 5, 2020❤️1
    24
    你试试,是不是真的会卡慢,我觉得 300 个属性其实还好。

    如果真的卡再考虑优化,比如数据一次性获取,但是 DOM 按需渲染,你的思路是可以试试的。
    TomatoYuyuko
    TomatoYuyuko
    Aug 5, 2020
    25
    设计有问题吧,让用户搜索下拉框选择显示哪些表头,再动态生成就行了,谁能一眼 300 列啊
    VictorJing94
    VictorJing94
    Aug 5, 2020
    26
    冻结表头和列头
    IGJacklove
    IGJacklove
    Aug 5, 2020
    27
    @nobuger 只加载关键数据,想要看全部数据单独做个详情页单独加载.总不可能加载一次他就看所有数据的所有属性吧,想看哪个的所有属性,单独加载哪个就可以了.
    xingyue
    xingyue
    Aug 5, 2020 via Android
    28
    @libook 233333,我第一反应也是这个,这点性能可能浏览器还看不上~
    不过展示设计肯定得再想想,300 列一起看不如不看。。。
    anguiao
    anguiao
    Aug 5, 2020 via Android
    29
    我觉得应该是慢在数据库操作上,而不是前端渲染。前端渲染一个 300 列的表格,应该不是什么大问题。
    想直接展示全部属性的话,感觉并不是很好优化。
    rodjerL
    rodjerL
    Aug 5, 2020 via iPhone
    30
    可以用虚拟滚动,react 有个库 react-window ,vue 不太清楚
    suzic
    suzic
    Aug 5, 2020 via Android
    31
    这些字段做成几个集合吧,前端搞成类似手风琴的折叠面板,每个面板展示一组集合
    loading
    loading
    Aug 5, 2020 via Android
    32
    你这个是 ui 问题,让设计师画成图再说。
    nobuger
    nobuger
    OP
    Aug 5, 2020
    34
    @jjianwen68 就是这样!谢谢
    nobuger
    nobuger
    OP
    Aug 5, 2020
    35
    @redbuck 谢谢
    @libook 谢谢
    xingyuc
    xingyuc
    Aug 5, 2020
    36
    倒个 excel 让他用手机 office 慢慢看 hhh,怎么可能这么多字段全都要看的
    shenyu1996
    shenyu1996
    Aug 5, 2020 via Android
    37
    我有个问题 像这样的虚拟列表能解决浏览器 ctrl + f 查找的问题么
    shyangs
    shyangs
    Aug 5, 2020
    38
    起點小說《从零开始》 3000 章節, 點進目錄頁也沒覺得卡慢.

    300 這個數量級對現代瀏覽器而言應該不會有性能問題.
    raymanr
    raymanr
    Aug 5, 2020
    39
    楼上说怎么可能都要看的得知道...

    领导的心态是: 我可以不看, 但你不能不显示
    qiayue
    qiayue
    Aug 5, 2020
    40
    我们有个类似需求,需要表格横向显示 100 天数据,每天有 20 个列,所以总共最多 2000 列。
    但是并不需要一次性显示完 2000 列,每次只需要显示自定义列即可。
    otakustay
    otakustay
    Aug 5, 2020
    41
    横向懒加载对性能帮助很少,弄不好还可能倒拖性能
    建议干脆导出 excel 给用户
    gzhhfj
    gzhhfj
    Aug 5, 2020 via Android
    42
    tab 页分不行吗?打开的时候加载
    keenkiller
    keenkiller
    Aug 6, 2020
    43
    让用户自己选要看的属性……
    miniwade514
    miniwade514
    Aug 6, 2020
    44
    300 多列?用户要滚动到崩溃啊。感觉这是产品设计的问题,必须搭配搜索功能,搜到的列才展示出来。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1988 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 71ms · UTC 16:28 · PVG 00:28 · LAX 08:28 · JFK 11:28
    ♥ Do have faith in what you're doing.