1

我对按需加载的概念感到困惑

我看到了这篇博文想知道我是否可以使用 ff 对 php 做同样的事情。方法:

  1. 检查当前网址
  2. 根据当前 url 提供 css 或 js

可以在 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 文件

4

2 回答 2

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>
于 2009-11-24T02:28:18.423 回答
1

你可以使用你的方法。css 文件更好地服务于头部,因此您可以将条件放入站点范围的模板中。

对于应该在 html 底部提供的 javascript,您可以简单地将标签直接放在 application/view/your_action.php 中,而无需使用任何基于 url 的条件。

关于

除了站点范围的 forms.css 和 layout.css 之外,为每个单独的页面创建一个 css 文件是没有问题的

好吧,您可以这样做,但请记住,这将为用户访问的每个新页面生成一个额外的请求(针对 css 文件)。如果性能很关键,你最好提供一个独特的压缩 css。

于 2009-11-24T23:34:18.077 回答