0
應付項目要求我必須使用與Yii2一起使用的不同版本的jQuery。我知道我可以通過禁用它:Yii 2和jQuery
'assetManager' => [
'bundles' => [
// you can override AssetBundle configs here
'yii\web\JqueryAsset' => [
'sourcePath' => null,
'js' => []
],
],
],
然後我去AppAsset:
class AppAsset extends AssetBundle
{
public $sourcePath = "@app/themes/v1/assets";
public $jsOptions = [ 'position' => \yii\web\View::POS_END ];
public $js = [
"js/lib/jquery/jquery-1.9.1.js",
];
}
但是,這帶來了一個大問題,yii.validation後jQuery的負載等:
</script><script src="/assets/5b466ff1/yii.js?v=1465857632"></script>
<script src="/assets/5b466ff1/yii.validation.js?v=1465857632"></script>
<script src="/assets/5b466ff1/yii.activeForm.js?v=1465857632"></script>
<script src="/assets/98d185b3/js/lib/jquery/jquery-1.9.1.js?v=1466702133"></script>
我的暫時解決方案是將POS_END更改爲POS_HEAD,但這會影響頁面搜索引擎優化?,據我所知,被認爲是不好的做法加載頭腦中的js。
所以我的問題是:
我怎樣才能yii.validation等之前使用POS_END和加載從我的主題資產加載jQuery的,?
一種可能性是將其添加到web/js/jquery.js中,但我更願意將其保留在資產包上。
任何想法?
更新:
添加這AppAsset讓我對主題本身控制。它比修改全局配置更清潔。
public function init()
{
parent::init();
Yii::$app->assetManager->bundles['yii\\web\\JqueryAsset'] = [
'js' => ['lib/jquery/jquery-1.9.1.js'],
'sourcePath' => '@app/themes/v1/assets/js'
];
}
這麼簡單!定義
jquery
,我沒有嘗試。謝謝!! – Eduardo