在 Yii 中,目前 jquery 的所有依赖项都在加载 jquery 的本地版本,我相信它是 1.6.*,未缩小。
大致如下:
<script src="/assets/2343/js/jquery.js"></script>
我想更新核心 jquery 依赖项以使用来自谷歌的 jquery 1.7.*
基本上我想包括
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
在我所有页面的底部,每当jQuery是一个依赖项时。
经过更多的谷歌搜索和环顾四周,我找到了答案:
在配置中,在"组件"下
'clientScript'=>array(
'packages'=>array(
'jquery'=>array(
'baseUrl'=>'http://ajax.googleapis.com/ajax/libs/jquery/',
'js'=>array('1.7.2/jquery.min.js'),
)
),
),
),
在 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>
谷歌第一次点击: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
);
,这个线程相当古老。但是由于我刚刚有一个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条目。解析核心脚本后,将在实际核心脚本之前搜索此列表。因此,这将首先被拾取,您可以通过这种方式添加您的个人版本的 jQuery。
我希望它有所帮助!