2012-06-27 5 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 (<link> в <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 из ваших файлов вида. И именно там вы этого хотите.

Смежные вопросы