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

2017-05-27 13:23:47 +08:00
 leega0

例:一个包含子商品展示页面。
后台接口提供的数据类型:
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 进行二次渲染。
这样做,感觉总是怪怪的。如果商品详情页以后每增加一个功能,我都要去取数据,对比,二次渲染,不管是性能和代码冗余都不太好。请问各位大神,怎么做才能一劳永逸。

1089 次点击
所在节点    问与答
4 条回复
giuem
2017-05-27 13:35:03 +08:00
可以先 merge 数据,再用渲染

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

或者客户登录先拿下收藏存到本地,然后一次拿到数据再对比添加最后渲染
leega0
2017-05-27 14:01:46 +08:00
@giuem
@wly19960911
看来只能这么做了,本来只想着简单的渲染下数据,
ChefIsAwesome
2017-05-27 14:14:13 +08:00
你自己把 api call 那一级封装下,在那里加 proxy。到 view 那层是你需要的数据就行了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/364217

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX