在商品列表中点击一个商品就跳转到这个商品的商品详情页,那这个商品详情页布局全都一样,内容不同,这是怎么做到的?不能是一个一个收工排的页面吧?
个人理解,有两种形式:
1.从后端开发的角度来看,一般来说,某个商品详情页后端代码一般是这样的
// Action (C)
public class Product{
//商品详情页方法
function item($pid){
....
$["data"] = .... //data数据一般根据$pid在此处从数据库中拿到。
return "/xxx.jsp"; //返回某个页面
}
}
//View (v)
如果是java的话一般jsp,freemarker,volicity模板
php的话就是smarty模板
node的话就是 jade等
模板的原理都是一样的,把公共的部分提取出来,不同的地方用标签代替。比如
<% if(xxx == xxx) %>
<div class="xxx">{{title}}</div>
<% else if(xxx !=xxx) %>
<div class="xxx">{{sex2}}</div>
<% else %>
后端返回的内容直接用模板渲染出来,由于pid(商品id)不同,所以可以看到不同的商品详情页的内容都不同,而实际上用的都是同一套模板,只是返回的数据不同而已。
2.从前端的角度,原理也差不多
后端并不直接返回某个页面,而是根据pid提供其对应的数据,通过ajax返回给前端,然后前端拿到数据以后填充前端模板进行渲染,打开不同的url(xxx.com/item/pid=1001)不同的pid的数据不同,所以渲染的页面不同。
标签一样 数据跟后台要
一种是用模板引擎,第二就是用vue.js,或者angular.js
这种框架,建议用vue,方便些,数据是ajax,返回data
这是动态页面技术实现的,后端使用PHP或者JAVA输出的HTML页面
item.jd.com/10127317515.html
这是随便点开的一个页面。 只要你访问的地址为 item.jd.com/"itemId" ,返回的就是对应这个商品的页面。