一、介绍

ThinkPHP的模板继承是其模板引擎的一个非常实用的功能,和文件包含差不多一个意思,写代码的时候非常的方便,只要留出block就可以。

比如 我在header中写好了模板

<!doctype>
<html>
<head>
</head>
<body>
<header></header>
<block name="content"></block>
</body>
</html>

然后在另外的页面中

<extends name="Public:header"/>
<block name="content"></block>

第二个页面中的block就会自动替换到header中的block,因此开发的时候很简洁。

第二个页面只需要关注block中的内容就行。

这个include file 差不多一个意思,不过更加的方便,可以增加多个block,使用顺手。

Pjax就不介绍了,push+ajax非常实用,如本站,速度快体验较好,移动站上像是微信上就不会显示上面的加载条,更像是APP的样子(只是样子)

二、实现

其实pjax和thinkphp的extends一个道理,不过一个是方便开发,实际上输出的时候还是源文档输出的。

而pjax是在浏览的时候,使用jquery替换相关dom,并将浏览器的地址替换掉,因此虽然是局部刷新,但是url确实更换了,传统的ajax是做不到这一点的。

实现如下:

只写重要的一点:将block放在要替换的div里面!!!!!

  • $(document).pjax('a[data-pjax]', '#MAIN', {fragment:'#MAIN', timeout:8000});
  • 其中我的a链接后的data-pjax是当有该属性的时候才跳转,否则不跳转。而#MAIN就是pjax的替换DIV

header.html

postbird

继承的页面:

postbird