我对按需加载的概念感到困惑
我看到了这个博客post,并想知道我是否可以使用ff对php做同样的事情。的方法:
可以在Kohana中这样做。
if (uri::segment(1) == 'search') // check current url
echo html::stylesheet('search.css'); // serve stylesheet
echo html::script('search.js'); // serve script
endif;
还是我认为这个想法错了?
除了站点范围的forms.css和layout.css之外,还有一个问题就是为每个页面提供一个css文件
答案 0 :(得分:1)
以下是使用REQUEST_URI的HTML和PHP的示例。变量将保存您所在的页面,您可能希望对其进行一些解析以获得具有斜杠等的确切页面,它通常是从根目录到文档的相对路径。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Demo</title>
<?php
switch($_SERVER['REQUEST_URI']) {
case "/home.php":
echo '<link type="text/css" href="home.css" rel="stylesheet" />';
echo '<script type="text/javascript" src="js/home.js"></script>';
break;
case "/about.php":
echo '<link type="text/css" href="about.css" rel="stylesheet" />';
echo '<script type="text/javascript" src="js/about.js"></script>';
break;
case "/contact.php":
echo '<link type="text/css" href="contact.css" rel="stylesheet" />';
echo '<script type="text/javascript" src="js/contact.js"></script>';
break;
default :
echo '<link type="text/css" href="default.css" rel="stylesheet" />';
echo '<script type="text/javascript" src="js/default.js"></script>';
break;
}
?>
</head>
<body>
My Page
</body>
</html>
答案 1 :(得分:1)
你可以使用你的方法。 css文件更好地在头部提供,因此您可以将您的条件放在站点范围的模板中。
对于javascript,应该在html的底部提供,您只需将标记直接放在application / view / your_action.php中,而无需使用任何基于网址的条件。
关于
如果有一个CSS,那就没关系了 除了每个页面的文件 从站点范围的forms.css和 layout.css中
嗯,你可以这样做,但请记住,这将为用户访问的每个新页面生成一个额外的请求(对于css文件)。如果性能至关重要,你最好提供一个独特的压缩css。