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>

 

 

标签