【问题标题】:Yii 2 and jQueryYii 2 和 jQuery
【发布时间】:2016-06-24 23:52:26
【问题描述】:

由于项目要求,我必须使用与 Yii2 附带的不同版本的 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",

    ]; 
}

但这带来了一个大问题,jquery在yii.validation之后加载等等:

</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,但这会影响页面 SEO,对吗?据我所知,在头部加载 js 被认为是不好的做法。

所以我的问题是:

如何从我的主题资源中加载 jQuery,使用 POS_END 并在 yii.validation 之前加载等?

一种可能性是将它添加到 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'
        ];

    }

【问题讨论】:

    标签: php jquery yii2


    【解决方案1】:

    只需将您的配置代码更改为:

    'assetManager' => [
            'bundles' => [
                'yii\web\JqueryAsset' => [
                    'js' => ['lib/jquery/jquery-1.9.1.js'],
                    'sourcePath' => '@app/themes/v1/assets/js'
                ]
            ]
        ]
    

    无需在 AppAsset 中定义jquery

    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" Not Required
      ]; 
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多