herroffizier / yiisset
为 Yii 提供的客户端脚本替代实现,具有最小化、压缩、合并、并行加载和 CoffeeScript 支持
dev-master
2014-08-19 14:34 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: dev-master
This package is not auto-updated.
Last update: 2024-09-14 15:27:12 UTC
README
Yiisset 是 Yii 的客户端脚本的替代方案。
Yiisset 减少了向服务器发出的请求次数,减少了传输的流量,并在浏览器中直接加速页面加载,同时不改变应用程序资源处理的常规逻辑。
该项目最初是作为 yii-EClientScript 的分支出现的。
功能
因此,Yiisset 允许
- 将多个资源合并到一个文件中,正确地将脚本按页面体中的位置分组,将样式按媒体属性分组;
- 最小化文件;
- 创建压缩文件的副本,这允许服务器在发送给客户端之前不花费时间压缩文件;
- 从页面体中删除内联脚本,如果有很多这样的脚本,这可能很有用;
- 在页面中使用资源的并行加载;
- 编译 CoffeeScript。
安装
在它的工作中,Yiisset 使用了一系列第三方工具,对于大多数流行的 *nix 发行版来说,安装这些工具并不困难。但是,如果您不想这样做,扩展将简单地禁用使用缺失工具的功能,并正常工作。
为了简单地合并文件和并行加载它们,您只需要最小的一组,这可能是您已经拥有的
- *nix(扩展不适用于 Windows 环境!)
- PHP >= 5.3
- Yii >= 1.1.14
对于其他所有内容,您需要 Node.js 和其模块
- UglifyJS 用于脚本最小化;
- clean-css 用于样式最小化;
- CoffeeScript 用于编译 CoffeeScript。
可以使用以下命令安装模块
npm install -g coffee uglifyjs clean-css
配置
为了连接扩展,只需替换组件
'clientScript' => array( 'class' => 'vendors.herroffizier.yiisset.components.EClientScript', ),
默认设置已经足够让扩展执行所有功能,但是为了方便在项目中调试,我使用以下配置
'clientScript' => array( 'class' => 'vendors.herroffizier.yiisset.components.EClientScript', // объединять ли стили 'combineCssFiles' => !YII_DEBUG, // оптимизировать ли стили 'optimizeCssFiles' => !YII_DEBUG, // объединять ли скрипты 'combineScriptFiles' => !YII_DEBUG, // оптимизировать ли скрипты 'optimizeScriptFiles' => !YII_DEBUG, // сохранять ли сжатые копии файлов 'saveGzippedCopy' => !YII_DEBUG, ),
最后,为了按项目修订号分组应用程序资源,可以替换另一个组件
'assetManager' => array( 'class' => 'vendors.herroffizier.yiisset.components.EAssetManager', // при forceCopy = true Yiisset будет обрабатывать ресурсы проекта при каждом запросе 'forceCopy' => YII_DEBUG, // в константе REVISION хранится номер ревизии проекта 'assetVersion' => !YII_DEBUG ? REVISION : null, ),