如何在 Yii 中缩小除 jQuery 之外的所有资产?

Posted

技术标签:

【中文标题】如何在 Yii 中缩小除 jQuery 之外的所有资产?【英文标题】:How do I minify all assets EXCEPT jQuery in Yii? 【发布时间】:2015-08-06 12:08:31 【问题描述】:

Yii 可以让你缩小和压缩 JS。我想压缩所有应用程序的 JS 并使用 Google 托管的 jQuery。我该怎么做?

Yii 允许您指定 jQuery http://www.yiiframework.com/doc-2.0/guide-structure-assets.html#customizing-asset-bundles 的来源

但我已经将bundles 键用于compressed assets:

'bundles' => require(__DIR__ . '/' . (YII_ENV_PROD ? 'assets-prod.php' : 'assets-dev.php')),

assets-prod.php 是自动生成的。我尝试在压缩过程中自定义资产包

assets.php
// Asset manager configuration:
'assetManager' => [
    'basePath' => '@webroot/assets',
    'baseUrl' => '@web/assets',
    'bundles' => [
      'yii\web\JqueryAsset' => [
        'sourcePath' => null,   // do not publish the bundle
        'js' => [
          '//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js',
        ],
      ],
    ],
],

但是当我运行yii asset assets.php config/assets-prod.php 时,它根本没有生成任何jQuery 文件。这几乎是我想要的,但是当我加载页面时,jQuery 完全丢失了。没有提到 jQuery。它在assets-prod.php 中创建了这个,这似乎是错误的

'yii\\web\\JqueryAsset' => [
    'sourcePath' => null,
    'js' => [],
    'css' => [],
    'depends' => [],
],

好的,然后我尝试了资产映射http://www.yiiframework.com/doc-2.0/guide-structure-assets.html#asset-mapping。我把这个放到web.php

      'assetMap' => [
        'jquery.js' => '//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js',
      ],  

但是,它仍然不会加载 jQuery。我恢复了assets.php 并再次运行yii asset assets.php config/assets-prod.php,但随后又将jQuery 放入一个大的缩小的JS 文件中。

【问题讨论】:

【参考方案1】:

你必须使用“baseUrl”属性,像这样:

class GoogleAsset extends AssetBundle

    public $baseUrl = 'http://maps.googleapis.com/maps/api';

    public $js = [
        'js?sensor=false&language=ru-ru&region=ru-ru'
    ];

 

【讨论】:

【参考方案2】:

你可以使用这个配置

'yii\\web\\JqueryAsset' => [
    'baseUrl' => '//ajax.googleapis.com/ajax/libs/jquery/2.1.3/',
    'js' => ['jquery.min.js'],
    'css' => [],
    'depends' => [],
],

【讨论】:

【参考方案3】:

你不需要 basURL

<?php

namespace app\assets;

use yii\web\AssetBundle;

class GoogleApiAsset extends AssetBundle

    public $js = ['//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'];

【讨论】:

以上是关于如何在 Yii 中缩小除 jQuery 之外的所有资产?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 选择除过滤器元素之外的所有子元素

jQuery删除除第一行之外的所有表行

如何取消选中除使用 jQuery 的复选框之外的所有复选框?

如何在 HTML 文件 (DOM) 中选择和隐藏除前 5 个元素之外的所有元素

选择除 div 之外的所有元素不适用于 jQuery

使用 JQuery 从列表中删除除前 N 个元素之外的所有元素