2amigos/escriptboost

此包已被弃用且不再维护。没有建议的替代包。

压缩您的应用程序资源页面的javascript/css代码。

安装次数: 8 113

依赖关系: 0

建议者: 0

安全性: 0

星标: 9

关注者: 6

分支: 5

开放问题: 0

类型:yii-extension

dev-master 2023-07-26 14:18 UTC

This package is auto-updated.

Last update: 2023-08-26 14:25:50 UTC


README

压缩您的应用程序资源页面的javascript/css代码

##介绍 很多人可能会 wonder,既然已经有了许多与压缩/压缩/打包javascript和css文件相关的良好扩展,为什么还要提供另一种解决方案。

我检查了我们存储库中的所有扩展,仅举几个例子

所有这些都非常出色,但都没有满足我们的要求。我没有问题压缩我们所有的文件,因为我们的团队将使用YUI压缩jar文件来创建我们的压缩javascript版本,然后使用CClientScript的出色映射功能。问题是外部或自行开发的扩展的资产和javascript代码,甚至是Yii自己的小部件,都写到了POS_BEGINPOS_ENDPOS_HEADPOS_LOADPOS_READY位置。这正是这个库所做的事情:允许Yii开发者压缩这些脚本。

##要求

您需要启用Yii中的任何缓存机制才能使用它。例如

'cache' => array(
    'class' => 'system.caching.CApcCache',
),

##库

该库有三种版本

  • EScriptBoost 组件
  • EClientScriptBoost 扩展
  • EAssetManagerBoost 扩展

###EScriptBoost 组件

这是一个非常易于使用的组件,可以随意压缩您的HTML、Javascript或CSS代码。使用的压缩器是

使用方法

// this is a very simple example :)
// we use cache as we do not want to
// compress/minify all the time our
// script 
$js = Yii::app()->cache->get('scriptID');

if(!$js)
{
     $cacheDuration = 30;
     $js = <<<EOD
     // my long and uncompressed code here
EOD;
     // $js = EScriptBoost::packJs($js);
     // $js = EScriptBoost::minifyJs($js, EScriptBoost::JS_MIN_PLUS);
     $js = EScriptBoost::minifyJs($js, EScriptBoost::JS_MIN);

     // see Cache guide for more options | dependencies
     Yii::app()->cache->set('scriptID', $cacheDuration); 
}
Yii::app()->clientScript->registerScript('scriptID', $js);

那不是很麻烦吗?不用担心,如果您真的不关心使用JS_MIN或JS_MIN_PLUS,您可以使用它的辅助函数 registerScript,它将自动处理所有这些

$js = <<<EOD
    // my long and uncompressed code here
EOD;
EScriptBoost::registerScript('scriptID', $js); 

###EClientScriptBoost 扩展

EScriptBoost 对我写的javascript代码很好,但Yii小部件写的代码怎么办? EClientScriptBoost 就是为此而开发的

使用方法

在您的main.php配置文件中

'import' => array(
// ... other configuration settings on main.php
// ... importing the folder where scriptboost is
    'application.extensions.scriptboost.*',
// ... more configuration settings 
	),
// ... other configuration settings on main.php
'components' => array(
     'clientScript' => array(
// ... assuming you have previously imported the folder 
//     where EClientScriptBoost is
         'class'=>'EClientScriptBoost',
         'cacheDuration'=>30,
// ... more configuration settings 

完成了!现在,每次您或您的应用程序上的其他组件注册一些脚本时,它都会被压缩并按照您在缓存设置中指定的方式缓存。简单吧?

###EAssetManagerBoost 扩展

但是,还有一个挑战需要解决。一些扩展、小部件等,在我们的资产中发布了一大堆未压缩的文件。如何解决这个问题?这正是 EAssetManagerBoost 发挥作用的地方。

此扩展不仅压缩即将注册的javascript/css文件,而且还确保文件不匹配其 $minifiedExtensionFlags 中的任何一项。这样,我们可以避免压缩/压缩不需要的文件。

使用方法

确保您已删除之前的资产文件夹内容。

'import' => array(
// ... other configuration settings on main.php
// ... importing the folder where scriptboost is
    'application.extensions.scriptboost.*',
// ... more configuration settings 
	),
// ... other configuration settings on main.php
'components' => array(
    'assetManager' => array(
// ... assuming you have previously imported the folder 
      'class' => 'EAssetManagerBoost',
      'minifiedExtensionFlags'=>array('min.js','minified.js','packed.js')
        ),
// ... more configuration settings 

重要提示 使用 EAssetManagerBoost 有一点小缺点,那就是第一次请求您的应用程序时,需要一点时间,因为它将遍历所有要发布的资产文件并对它们进行压缩和精简。

### 精简 CSS 和/或 HTML EScriptBoost 提供了一系列实用的辅助函数,其中包括 minifyCSS 和 minifyHTML。它们非常易于使用,例如,如果您查看 EAssetManagerBoost 的代码第 172-173 行,您将看到对它的使用

[php]
@file_put_contents($dstFile, EScriptBoost::minifyCss(@file_get_contents($src)));

如您所见,您需要传递文件的 CSS 内容或脚本,以便进行压缩。精简 HTML 的方式相同,您可以获取 renderPartial 返回的内容进行压缩,甚至可以对整个视图进行操作。如何应用将取决于应用程序的需求,并且需要仔细研究,因为如果不使用适当的缓存技术,这可能会减慢您的应用程序。

请查看参考链接,以获取有关如何配置此扩展中包含的压缩器的信息。

## 变更日志

  • 版本 1.0.1 包含 HTML 压缩功能
  • 版本 1.0.0 首次公开发布

## 资源