Mojolicious初学(四)
一、路由名称——Route names
对于每一个路由,例如‘/’,’/test’,我们都可以给他们起一个名称(name)。这个名称的用处,主要两点:
一是在template中调用‘link_to’(需要引入一个Mojo插件——Mojolicious::Plugin::TagHelpers)自动的生成url。
二是通过name,保证Mojolicious框架自动的将后台逻辑与template关联起来。
下面看个例子:
use Mojolicious::Lite -signatures; # Render the template "index.html.ep" get '/' => sub ($c) { $c->render; } => 'index'; #这是最基本的设置name方式,即在花括号}后加=> name字符串。 # Render the template "hello.html.ep" get '/hello'; #这是隐藏式的写法,hello即为name。这种情况通常出现在仅仅调用一个前端html页面的情况下 app->start; __DATA__ @@ index.html.ep <%= link_to Hello => 'hello' %>. #在import导入Mojolicious::Plugin::TagHelpers模块后,可以照葫芦画瓢,引入link_to,这将在浏览器端生成一个<a>标签超链接。 <%= link_to Reload => 'index' %>. @@ hello.html.ep Hello World!
二、布局layout
无论是何种网站,我们会注意到网页的上边、左边、或者右边的内容,无论网址如何变化,其内容总是相同的,看上去仅仅是中间的部分变化一般。
实现这种方式,我们需要一种template开发概念,叫做布局。即将网页中不变的那部分html 标签代码放在一个文件中,每一次开发网页时都用一句话调用此文件即可。
直接看例子:
use Mojolicious::Lite; get '/with_layout'; app->start; __DATA__ @@ with_layout.html.ep #这是调用layout的template % title 'Green'; #声明layout中title的值 % layout 'green'; #声明使用的layout名称 Hello World! #从此处开始,所有的内容均会放置于layout的content位置。 @@ layouts/green.html.ep #这是layout布局文件。 <!DOCTYPE html> <html> <head><title><%= title %></title></head> #title是布局文件中的一处变量,添加其他变量照此即可 <body><%= content %></body> #content是默认内容,及调用layout的template文件中的主要内容,均放置于此区域。 </html>