V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
leega0
V2EX  ›  问与答

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

  •  
  •   leega0 · May 27, 2017 · 1466 views
    This topic created in 3270 days ago, the information mentioned may be changed or developed.

    例:一个包含子商品展示页面。
    后台接口提供的数据类型:
    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 replies    2017-05-27 14:14:13 +08:00
    giuem
        1
    giuem  
       May 27, 2017 via iPhone
    可以先 merge 数据,再用渲染

    或者叫后端加一层 API Proxy
    wly19960911
        2
    wly19960911  
       May 27, 2017 via Android
    先拿到两个数据再处理不行吗。

    或者客户登录先拿下收藏存到本地,然后一次拿到数据再对比添加最后渲染
    leega0
        3
    leega0  
    OP
       May 27, 2017
    @giuem
    @wly19960911
    看来只能这么做了,本来只想着简单的渲染下数据,
    ChefIsAwesome
        4
    ChefIsAwesome  
       May 27, 2017
    你自己把 api call 那一级封装下,在那里加 proxy。到 view 那层是你需要的数据就行了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   850 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 20:32 · PVG 04:32 · LAX 13:32 · JFK 16:32
    ♥ Do have faith in what you're doing.