基于Blade模板的页面重构
2019-01-14 13:45
274 查看
使用通用视图
当创建的几个视图包含着一些重复的代码时,为了不违反(Don’t repeat yourself)原则,需要对页面进行重构,来保证代码的灵活与整洁。
方法:
将多余的代码从视图中抽离出来,单独创建一个默认视图以存放通用的代码。
在Laravel框架中,视图文件默认存储在 resources/views 文件夹中。
若在该文件夹下存在2个页面–home.blade.php和about.blade.php。
代码如下:
#home.blade.php <!DOCTYPE html> <html> <head> <title>Home</title> </head> <body> <h1>This is home</h1> </body> </html>
#about.blade.php <!DOCTYPE html> <html> <head> <title>About</title> </head> <body> <h1>This is about</h1> </body> </html>
显然这两个页面的代码编写违反了DRY,观察可发现有很多重复代码,提取出并在当前的view文件夹下新建名为 default.blade.php 的文件:
#default.blade.php <!DOCTYPE html> <html> <head> <title>@yield('title', 'Test')</title> </head> <body> @yield('content') </body> </html>
@yield(‘content’) 表示该占位区域将用于显示 content 区块的内容,而 content 区块的内容将由继承自 default 视图的子视图定义
@yield(‘title’, ‘Test’) 表示类似上一个,但引入第二个参数表示当指定变量的值为空时,将用 Test 来作为默认值
然后对原有的俩页面进行重构
#重构后的 home.blade.php @extends('default') @section('title', 'Home') @section('content') <h1>This is home</h1> @stop
#重构后的 about.blade.php @extends('default') @section('title', 'About') @section('content') <h1>This is about</h1> @stop
@extends(‘default’) 表通过传递参数来继承 default 的视图模板
使用 @section 和 @stop 代码来填充父视图的 content 区块,所有包含在 @section 和 @stop 中的代码都将被插入到父视图的 content 区块。
若再将default拆为几个部分(局部视图)时,记得得在default中再引入这些局部视图。用 @include(‘file’)实现之
如此,便实现了图的重构,符合DRY理念
相关文章推荐
- laravel框架从blade模板页面向php逻辑代码提交数据(传值)的位置
- 扩展Sitemesh3 DecoratorSelector实现基于请求参数调用装饰模板页面的实现
- angularJS基于WEB的静态页面模板
- 基于rails的schedule网站开发(12):index View页面的重构
- Laravel的Blade模板,创建新页面,移植已有页面
- 扩展Sitemesh3 DecoratorSelector实现基于请求参数调用装饰模板页面的实现
- 基于vue cli重构多页面脚手架过程详解
- Laravel 如何在Blade模板中能够根据不同的子页面附加不同的js和CSS
- 基于页面继承的代码重构
- 基于jquery模板实现页面渲染
- 基于页面继承的代码重构
- 基于jquery的页面分屏切换模板
- Laravel-Blade模板引擎
- 基于C++可变模板参数的Log,任意个参数
- 黄聪:php中utf-8模板获取GB2312编码页面传递URL中文编码转换方法
- 王子墨网友的基于jQuery的个性个人网站模板
- Android Studio自定义模板 写页面竟然可以如此轻松
- 基类、扩展类──页面重构中的模块化设计(五)
- 在子页面中,javascript让模板页中添加的用户控件中的控件选中focus
- c++ 基于Policy 的 模板编程