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

[前端] 对一种页面做渲染的问题求解脱。。。

  •  
  •   leega0 · 2017-05-27 13:23:47 +08:00 · 1150 次点击
    这是一个创建于 2770 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例:一个包含子商品展示页面。
    后台接口提供的数据类型:
    1.商品详情接口:api.gd_detail.xxx
    数据结构

    {goods:{"pid":123,
    	...
    	"children":[
        	{"cid":1234,"key":"value",...},
       	{"cid":1235,"key":"value",...}
        ]
     }}
    

    2.商品收藏列表接口:api.gd_favor.xxx
    数据结构

    {favor_list:[
      {"cid":1234,"key":"value"},
      {"cid":1246,"key":"value"},
      {"cid":1247,"key":"value"},
      {...}
      ]
    }
    

    那么问题来了:
    在商品详情接口,后台因为某种原因没给我提供子商品是否被收藏。
    渲染商品详情的页面时候,目前的做法:
    拿到商品详情数据后先渲染页面并且在 dom 上埋点 cid,children 数组拿出来跟 favor 里面的 cid 进行遍历比对,找到比对上的 cid
    重新遍历 dom 树,对埋点的 don 进行二次渲染。
    这样做,感觉总是怪怪的。如果商品详情页以后每增加一个功能,我都要去取数据,对比,二次渲染,不管是性能和代码冗余都不太好。请问各位大神,怎么做才能一劳永逸。

    4 条回复    2017-05-27 14:14:13 +08:00
    giuem
        1
    giuem  
       2017-05-27 13:35:03 +08:00 via iPhone
    可以先 merge 数据,再用渲染

    或者叫后端加一层 API Proxy
    wly19960911
        2
    wly19960911  
       2017-05-27 13:58:51 +08:00 via Android
    先拿到两个数据再处理不行吗。

    或者客户登录先拿下收藏存到本地,然后一次拿到数据再对比添加最后渲染
    leega0
        3
    leega0  
    OP
       2017-05-27 14:01:46 +08:00
    @giuem
    @wly19960911
    看来只能这么做了,本来只想着简单的渲染下数据,
    ChefIsAwesome
        4
    ChefIsAwesome  
       2017-05-27 14:14:13 +08:00
    你自己把 api call 那一级封装下,在那里加 proxy。到 view 那层是你需要的数据就行了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3149 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:38 · PVG 21:38 · LAX 05:38 · JFK 08:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.