yiicod / clientscript
Yii 框架的 JS/CSS 压缩工具
2.0.0
2016-02-29 10:29 UTC
Requires
- natxet/cssmin: 3.0.*
README
Yii 1.4.x 或更高版本
描述(这是从 EClientScript 分支出来的,修复了 CssMin 中的问题)
EClientScript(Yii 的 CClientScript 扩展)
这是为 Yii 框架优化的客户端脚本管理器,可以压缩和合并 CSS/JS 文件。
它将自动检测文件内容的变化(基于修改时间)并相应地生成唯一的文件名。
这将通过合并多个资源文件为一个(或多个)文件来减少对资源文件的 HTTP 调用。
源代码托管在 bitbucket 上
https://bitbucket.org/yiicod/clientscript.git
CSS 文件
CSS 文件根据其媒体属性进行合并,文件中具有相对路径的背景图像也可以正确显示。
脚本文件
脚本文件根据其位置进行合并,如果你使用了 'CClientScript::POS_HEAD',那么页面上的所有脚本文件将合并为一个文件。
如果你使用了 'CClientScript::POS_HEAD' 和 'CClientScript::POS_END',例如,那么每个页面将有两个文件,因为这些资源位于不同的位置。
文件优化
CssMin 用于优化合并的 CSS 文件。你可以设置组件的 'optmizeCssFiles' 属性以启用此功能。 JSMinPlus 用于优化合并的脚本文件。你可以设置组件的 'optmizeScriptFiles' 属性以启用此功能。
用法
- 使用此扩展与向应用程序配置中的 components 数组添加以下代码一样简单
'clientScript' => array(
'class' => 'application.vendors.yii-EClientScript.EClientScript',
'combineScriptFiles' => !YII_DEBUG, // By default this is set to true, set this to true if you'd like to combine the script files
'combineCssFiles' => !YII_DEBUG, // By default this is set to true, set this to true if you'd like to combine the css files
'optimizeScriptFiles' => !YII_DEBUG, // @since: 1.1
'optimizeCssFiles' => !YII_DEBUG, // @since: 1.1
'optimizeInlineScript' => false, // @since: 1.6, This may case response slower
'optimizeInlineCss' => false, // @since: 1.6, This may case response slower
),
然后你可以像往常一样使用常规的 'registerScriptFile' 和 'registerCssFile' 方法,文件将自动合并或优化。
- 用于为 IE 浏览器条件加载 JS/CSS 文件,你只需指定媒体属性。
$cs = Yii::app()->clientScript;
// result to: <!--[if lt IE 9]><script src="/js/html5.js"></script><![endif]-->
$cs->registerScriptFile('/js/html5.js', CClientScript::POS_HEAD, array('media' => 'lt IE 9'));
// result to: <!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="bootstrap/css/ie.css" /><![endif]-->
$cs->registerCssFile('/css/ie.css', 'lte IE 6');
已知问题
当某些资源文件不能合并且它们严格依赖于加载顺序时,可能会出现问题。