2012-06-27 63 views
3

我已经在这个很长一段时间一直在读......我很困惑 -的Yii包括CSS和JS文件

你能对之间有什么区别帮助:

Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.'/css/some-file.css'); 

<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/some-file.css 

是它是一个性能问题,还是只是不同的语法?

感谢, 丹尼

回答

5

registerCssFile总注册<head>标签之间的文件,即使你在一个视图的地方调用它。 如果您关心HTML验证( <body>无效),但仍希望在视图中包含CSS文件,这会很有帮助。

registerCssFile实际上有助于提高性能,因为CSS仅在需要时注册(并且需要它)。

+4

还应该注意的是,registerCssFile的优势在于,如果您在多个位置(例如在视图中,在扩展中等)加载CSS,则会阻止它多次加载。 。 。 – ernie

+1

这是一个很好的观点。 – adamors

+0

谢谢,这就是我需要的! –

0

您使用它的方式完全相同。要验证这一点,请检查页面的源代码(在浏览器中)并检查Yii :: app() - > clientScript-> registerCssFile创建的语句。

但是,clientScript允许您控制脚本在HTML文件中的位置。查看:http://www.yiiframework.com/doc/api/1.1/CClientScript#registerScriptFile-detail并查找POS_HEAD,POS_BEGIN,POS_END。

可能更重要的是:在MVC哲学中,您希望在视图文件中包含与HTML输出相关的所有内容。 Yii :: app() - > clientScript允许您从视图文件中添加CSS和JS文件。这就是你想要的地方。