yii-ext / client-script
扩展客户端脚本
This package is not auto-updated.
Last update: 2024-09-10 01:22:53 UTC
README
Yii 1.1.x 或以上
描述
EClientScript(Yii的CClientScript扩展)
这是一个为Yii框架优化的客户端脚本管理器,可以压缩和合并CSS/JS文件。
它将自动检测文件内容的更改(基于修改时间),并相应地生成唯一的文件名。
这将通过将多个资源文件合并为单个(或多个)文件来减少对资源文件的HTTP调用。
自1.5版本起,也支持在IE浏览器中条件加载js/css文件,请参阅示例代码。
源代码托管在github上
https://github.com/muayyad-alsadi/yii-EClientScript
####CSS文件:CSS文件根据其media属性合并,文件中具有相对路径的背景图像也可以正确显示。
####脚本文件:脚本文件根据其位置合并,如果您使用'CClientScript::POS_HEAD',则页面上的所有脚本文件将合并为单个文件。
如果您使用'CClientScript::POS_HEAD'和'CClientScript::POS_END',例如,则每个页面请求将有两个文件,因为这些资源位于不同的位置。
####文件优化(实验性,@since: 1.1)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文件,您只需指定media属性。
$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');
注意
如果您注册了一些不在Web应用程序根目录中的外部资源文件,它们将保持不变,不会合并。压缩或优化是实验性功能,请谨慎使用(@since: 1.1)
更改日志
2013年8月13日
- 新版本号1.6
- 修复合并压缩脚本时的错误,它们可能在末尾缺少分号
- 添加了对优化内联CSS/JS代码的支持
2013年8月2日
- 修复了非合并CSS文件的加载顺序。
2013年3月29日
- 新版本号1.5
- 与registerScript和registerScriptFile的第三个参数兼容
- 添加了对IE中条件加载js/css文件的支持。
- 在注册带有相对路径的脚本/css文件时,在当前请求的base url前添加前缀
2013年3月27日(由Muayyad Alsadi编写)
- 新版本号1.4
- 更新JSMinPlus, CssMin
- 使用更强的哈希值对文件名进行哈希处理
- 考虑修改时间来计算哈希
- 默认启用所有功能
2010年12月6日
- 修复了以
@charset "xxx"
开始的CSS文件的问题,它应在文件的第一行,而不是重复。 - 支持主题资源文件。
2010年11月23日
- 跳过包含
.pack.
的文件的最小化处理。 - 将最后修改时间添加到合并文件中作为QUERY_STRING,以避免文件更新时浏览器缓存未正确刷新。
2010年11月6日
- 新版本号 1.3
- 不重复最小化已最小化的JavaScript代码,这些代码的文件名包含
.min.
。 - 修复了
getRelativeUrl()
平台兼容性问题。(感谢 Troto)
已知问题
当某些资源文件无法合并,并且它们严格依赖于加载顺序时,可能存在一些问题。
问题报告
欢迎报告问题和评论,请将问题报告到 https://github.com/muayyad-alsadi/yii-EClientScript/issues