6

在 Yii 中,目前 jquery 的所有依赖项都在加载 jquery 的本地版本,我相信它是 1.6.*,未缩小。

类似于以下内容:

<script src="/assets/2343/js/jquery.js"></script>

我想更新核心 jquery 依赖以使用google的 jquery 1.7.*

基本上我想包括

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"> 

每当 jquery 是依赖项时,在我所有页面的底部。

4

4 回答 4

25

经过更多的谷歌搜索和环顾四周,我找到了答案:

在配置中,在“组件”下

'clientScript'=>array(
  'packages'=>array(
    'jquery'=>array(
      'baseUrl'=>'http://ajax.googleapis.com/ajax/libs/jquery/',
        'js'=>array('1.7.2/jquery.min.js'),
      )
    ),
  ),
),
于 2012-05-09T12:07:37.363 回答
14

在 yii 的文档中还看到了另一种方法:

例如,我们可以包含来自 Google 服务器而不是我们自己的服务器的 jquery.js。为此,我们首先将 scriptMap 配置如下,

$cs=Yii::app()->clientScript;
$cs->scriptMap=array(
 'jquery.js'=>false,
 'jquery.ajaxqueue.js'=>false,
 'jquery.metadata.js'=>false,
 ......
);

通过将这些脚本文件映射为 false,我们可以防止 Yii 生成包含这些文件的代码。相反,我们在页面中编写以下代码以明确包含来自 Google 的脚本文件,

<head>
<?php echo CGoogleApi::init(); ?>

<?php echo CHtml::script(
 CGoogleApi::load('jquery','1.3.2') . "\n" .
 CGoogleApi::load('jquery.ajaxqueue.js') . "\n" .
 CGoogleApi::load('jquery.metadata.js')
 );
?>
......
</head>
于 2012-05-09T12:25:35.937 回答
2

第一次谷歌点击:http ://www.yiiframework.com/wiki/259/serve-jquery-and-jquery-ui-from-google-s-cdn/

除了覆盖 clientScript 配置,您可能还想覆盖 widgetFactory 配置:

  <?php
  return array(
  // other config
  'components'=>array(
    'clientScript'=>array(
      'packages'=>array(
        'jquery'=>array(
          'baseUrl'=>'//ajax.googleapis.com/ajax/libs/jquery/1/',
          'js'=>array('jquery.min.js'),
        )
      ),
      // other clientScript config
    ),
    'widgetFactory'=>array(
      'widgets'=>array(
        'CJui<WidgetName>'=>array( // where <WidgetName> is the name of the JUI Widget (Tabs, DatePicker, etc.). Each CJuiWidget used must be declared
          'scriptUrl'=>'//ajax.googleapis.com/ajax/libs/jqueryui/1/',
          'theme'=>JUI-THEME,
          'themeUrl'=>'//ajax.googleapis.com/ajax/libs/jqueryui/1/themes/',
        ),
        // Repeat for other CJuiWidgets
      ),
    ),
    // other component config
  ),
  // other config
);
于 2012-05-10T09:13:47.397 回答
0

我知道,这个线程相当古老。但由于我刚刚有一个 encoutner,我认为提及这一点很重要。

在 Yii 的最新版本中,我从 1.1.11 快速转发到当前版本,包机制不仅实现了,而且得到了改进。它以前存在,但现在它实际上已经到了一个点,最初声明和勾选的将 jquery 部分设置为的方法false将不再起作用。不过,我发现了如何解决它!

$cs->packages["jquery"] = [
    "basePath"=>Yii::app()->cdn->basePath,
    "baseUrl"=>Yii::app()->cdn->baseUrl,
    "js"=>["js/jquery-1.11.1.js"]
];

这直接取自我的代码,但说明了我是如何做到的。基本上,我在包列表中添加了一个 jQuery 条目。当 Core 脚本被解析时,这个列表在实际的 CoreScripts之前被搜索。因此,这将首先被选中,您可以通过这种方式添加您的个人版本的 jQuery。

我希望它有帮助!

于 2015-04-09T02:43:19.170 回答