herroffizier/yiisset

为 Yii 提供的客户端脚本替代实现,具有最小化、压缩、合并、并行加载和 CoffeeScript 支持

dev-master 2014-08-19 14:34 UTC

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 和其模块

可以使用以下命令安装模块

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, 
),