## 嵌套调用 - 模块与模块之间的相互调用(相对路径) - 项目和项目之间的相互调用(绝对路径) - 你可以写一个通用模块就可以大面积使用,减少代码维护成本 - 或许可以实现一些神奇的效果 #### 示例代码 设置文件/html/www/demo/tpl/tpl.blade.php内容如下 ~~~ <div>这是最顶端模块</div> {!! tpl('a') !!} {!! tpl('a/aa', ['get' => ['name' => 'GET参数来自顶部模块'], 'post' => ['name' => 'POST参数来自顶部模块']]) !!} {!! tpl('c') !!} {!! tpl('e') !!} <div>#以下是全局调用示例</div> <div>#这样就可以跨项目相互调用</div> {!! tpl('/www/demo/tpl/c') !!} ~~~ 设置文件/html/www/demo/tpl/tpl.css内容如下 ~~~ _CLASS_{ width: 500px; } ~~~ 设置文件/html/www/demo/tpl/a/tpl.blade.php内容如下 ~~~ <div>a模块</div> {!! tpl('aa', ['get' => ['name' => 'GET参数来自a模块'], 'post' => ['name' => 'POST参数来自a模块']]) !!} ~~~ 设置文件/html/www/demo/tpl/a/tpl.css内容如下 ~~~ _CLASS_{ color:#F00; } ~~~ 设置文件/html/www/demo/tpl/a/aa/tpl.blade.php内容如下 ~~~ <div>aa模块:{{$_GET['name']}},{{$_POST['name']}}</div> ~~~ 设置文件/html/www/demo/tpl/a/aa/tpl.css内容如下 ~~~ _CLASS_{ background-color: #FEE; } ~~~ 设置文件/html/www/demo/tpl/c/tpl.blade.php内容如下 ~~~ <div>c模块</div> {!! tpl('../a/aa', ['get' => ['name' => 'GET参数来自c模块'], 'post' => ['name' => 'POST参数来自c模块']]) !!} ~~~ 设置文件/html/www/demo/tpl/c/tpl.css内容如下 ~~~ _CLASS_{ color:#08F; } ~~~ 设置文件/html/www/demo/tpl/e/tpl.blade.php内容如下 ~~~ <div>e模块</div> {!! tpl('ee', ['get' => ['name' => 'GET参数来自e模块'], 'post' => ['name' => 'POST参数来自e模块']]) !!} ~~~ 设置文件/html/www/demo/tpl/e/tpl.css内容如下 ~~~ _CLASS_{ color:#080; } ~~~ 设置文件/html/www/demo/tpl/e/ee/_init.php内容如下 ~~~ <?php return function (){ $get_name = $_GET['name']; $post_name = $_POST['name']; echo "<div>--- {$get_name} | {$post_name} ----</div>"; }; ~~~ 设置文件/html/www/demo/tpl/e/ee/tpl.blade.php内容如下 ~~~ <div>ee模块</div> ~~~ 设置文件/html/www/demo/tpl/e/ee/tpl.css内容如下 ~~~ _CLASS_{ background-color: #CCF; } ~~~ 打开网址[http://demo.tphp.com/tpl](http://demo.tphp.com/tpl)获得如下效果 ![](https://box.kancloud.cn/443db1fd2a2cbda2d6b1f34add6ee23b_565x357.png) 生成源代码 ![](https://box.kancloud.cn/a6c2a932283b76e173dd3e6735d992b9_783x711.png) 生成的CSS ![](https://box.kancloud.cn/8c0a49132734564506aa801ce144010a_578x507.png) 生成的JS(未设置tpl.js,所以没有js代码) 这是总页面路径,当然所有的子页面同样可以单独访问,比如: 打开网址[http://demo.tphp.com/tpl/c](http://demo.tphp.com/tpl/c)获得如下效果 ![](https://box.kancloud.cn/7def0ae08c063ed67d690eb77e298139_568x127.png) - 嵌套的页面有点多,页面嵌套、CSS嵌套放到一起就会有点绕,需耐心体会 - JS嵌套也是一样,这里就不举例了 - 虽然调用的有点多,但逻辑清晰,很容易控制模块与模块之间的关系,模块之间的class自动指向,无需记住样式名称,所以这里SCSS就发挥了极大的作用,只要写一次_CLASS_就能够实现自动指向,SCSS写法如下: ~~~ _CLASS_{ .child_1{ ... } .child_2{ ... } background-color: #CCF; } ~~~ 将转换为: ~~~ _CLASS_{ background-color: #CCF; } _CLASS_ .child_1{ ... } _CLASS_ .child_2{ ... } ~~~