萌新laravel踩坑记二:Blade 组件
大家好,萌新又来踩坑了,这次踩的是 Blade
组件
其实 Blade
的语法跟之前用过的ThinkPHP
,Smarty
之类的挺像的,看看基本上就能上手了,这里主要是几个点。
组件拆分
- 总所周知,切图仔把页面切好后一般就是丢一个大的
HTML
页面过来,然后我们再根据页面进行拆分,一般会分为,head
layout
footer
content
这几大页面。 - 要实现如上功能,在传统的模版语言中,一般都会把这几大页面拆分成不同的模版文件,然后使用类似
include
的指令引入进来,笔者一开始也以为是这样子拆分,但是在找了一圈,没发现类似include
的语法,倒是发现了名为组件
的拆分方式,研究了一番之后确实非常 amazing 啊。 - 首先先按照传统方式,将页面拆分成
head
layout
这两个组件(笔者这边的页面较为简单,所以不需要单独拆分footer
)
创建组件
- 使用
php artisan make:component head
来创建head
组件,layout
组件同理 - 创建完成之后,会在
app/View/Components
下看到Head.php
和Layout.php
,这两个就是用来渲染组件的类,可以在这里面加一下共有的逻辑,并渲染变量信息等。同时,在resources/views/components/
目录下也会发现head.blade.php
和layout.blade.php
这两个模版文件。
使用组件
组件创建完了,就需要引用组件进来,类似include
指令一般。
- 使用
php artisan make:view index
命令创建一个模板文件,你可以在resources/views
目录下找到index.blade.php
这个文件。 - 在
index.blade.php
中加入如下代码:<x-layout> <div>hello world!</div> </x-layout>
这里的
x-layout
指的是,引用layout
这个组件,组件在模版中一般以x-
开头的形式,带上组件名,构成标签名称,标签内部的内容就指代要嵌入到组件内部的数据。
那么,组件是怎么知道要把数据放入到自己的模版中呢,答案就是 {{$slot}}
这个指令,熟悉vue
的同学应该很清楚,就是渲染组件默认插槽数据的意思,同理在 Blade
中也是如此。
同时,组件和组件间,也可以用 x-{组件名}
的形式进行引入,例如:
<body>
<x-head />
{{$slot}}
</body>
上述代码,就是在
layout.blade.php
中引入head
组件
那么,一个简单的切页布局就完成了,简单来说就是:
要渲染的页面
detail.blade.php
-> 查找当前页面的所有组件x-layout
-> 再查找组件中是否包含其他组件x-layout
包含x-head
-> 最终渲染出 HTML
踩坑记录(占位)
总结
组件这个坑,其实只是小踩了一下,因为目前用到的功能还是比较少的。总体来说用起来还是挺棒的,感觉像是写 vue
这类前端框架一样,一开始不是很理解,上手实际操作之后,就很快适应的,真的很赞。
本作品采用《CC 协议》,转载必须注明作者和本文链接
:joy: blade 组件可是甩其他的好几条街啊
兄弟,这个不是坑吧,只是你不够熟而已。