当我使用 layout.vm 时如何以速度包含额外的静态文件 (css,js)?
how to include extra static file(css,js) with velocity when I use a layout.vm?
我有一个layout.vm
这样的
<html>
<head>
<title>$!page_title</title>
<link href="path/to/css.css">
</head>
<body>
$screen_content
<script src="path/to/js.js"></script>
</body>
</html>
这里有一个 user.vm
需要用 layout.vm
渲染
#set($page_title="User")
<div>hello, user.vm</div>
但是 user.vm
需要更多 js/css 文件
我希望渲染结果会像这样
<html>
<head>
<title>User</title>
<link href="path/to/css.css">
<link href="path/to/user.css">
</head>
<body>
<div>hello, user.vm</div>
<script src="path/to/js.js"></script>
<script src="path/to/user.js"></script>
</body>
</html>
我该怎么办?
在 user.vm
中声明另一个变量:
#set($isUser = true)
现在编辑 layout.vm
。有两种选择。如果您只想使用一个样式表,请像这样切换它们:
<head>
<title>$!page_title</title>
#if($isUser)
<link rel="stylesheet" href="path/to/user.css">
#else
<link rel="stylesheet" href="path/to/css.css">
#end
</head>
或者像这样覆盖样式
<head>
<title>$!page_title</title>
<link rel="stylesheet" href="path/to/css.css">
#if($isUser)<link rel="stylesheet" href="path/to/user.css">#end
</head>
对您的脚本执行相同的操作。如果你把它们放在头部,你甚至可以在一张支票中完成。
注意:您可以通过检查 $!page_title
是否等于 'User' 来做几乎相同的事情,但这不是最好的主意,因为您重载了 var 的含义。因此,我建议使用另一个。
另请注意:此解决方案完全适用于 Velocity。如果您无论如何都在使用支持对象,您应该使用它们(通常)来声明和设置 var(s)。
在 Velocity 1.7 中测试
我有一个layout.vm
这样的
<html>
<head>
<title>$!page_title</title>
<link href="path/to/css.css">
</head>
<body>
$screen_content
<script src="path/to/js.js"></script>
</body>
</html>
这里有一个 user.vm
需要用 layout.vm
#set($page_title="User")
<div>hello, user.vm</div>
但是 user.vm
需要更多 js/css 文件
我希望渲染结果会像这样
<html>
<head>
<title>User</title>
<link href="path/to/css.css">
<link href="path/to/user.css">
</head>
<body>
<div>hello, user.vm</div>
<script src="path/to/js.js"></script>
<script src="path/to/user.js"></script>
</body>
</html>
我该怎么办?
在 user.vm
中声明另一个变量:
#set($isUser = true)
现在编辑 layout.vm
。有两种选择。如果您只想使用一个样式表,请像这样切换它们:
<head>
<title>$!page_title</title>
#if($isUser)
<link rel="stylesheet" href="path/to/user.css">
#else
<link rel="stylesheet" href="path/to/css.css">
#end
</head>
或者像这样覆盖样式
<head>
<title>$!page_title</title>
<link rel="stylesheet" href="path/to/css.css">
#if($isUser)<link rel="stylesheet" href="path/to/user.css">#end
</head>
对您的脚本执行相同的操作。如果你把它们放在头部,你甚至可以在一张支票中完成。
注意:您可以通过检查 $!page_title
是否等于 'User' 来做几乎相同的事情,但这不是最好的主意,因为您重载了 var 的含义。因此,我建议使用另一个。
另请注意:此解决方案完全适用于 Velocity。如果您无论如何都在使用支持对象,您应该使用它们(通常)来声明和设置 var(s)。
在 Velocity 1.7 中测试