如何在没有jQuery的情况下使用Yii?

时间:2015-08-11 16:21:40

标签: yii2

不幸的是,我工作的公司已经为Mootools编写了很多客户端代码,他们似乎并不喜欢彼此。 :S

无论我做什么,我似乎都无法阻止jQuery被包含在每一页中。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

默认情况下,Yii应用程序模板使用AppAsset

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
    ];
    public $js = [
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}

取决于YiiAsset资产包,Yii内置小部件大量使用jQuery。删除' yii \ web \ YiiAsset'如果您不打算使用Yii客户端功能,则需要依赖。

答案 1 :(得分:1)

转到您的AppAsset.php并删除yii\web\YiiAsset

另外,转到主布局文件,删除默认的NavBar,因为它会调用jquery.js来渲染

#remove the default main menu below
NavBar::begin([
    'brandLabel' => 'My Company',
    'brandUrl' => Yii::$app->homeUrl,
    'options' => [
        'class' => 'navbar-inverse navbar-fixed-top',
    ],
]);
echo Nav::widget([
    'options' => ['class' => 'navbar-nav navbar-right'],
    'items' => [
        ['label' => 'Home', 'url' => ['/site/index']],
        ['label' => 'About', 'url' => ['/site/about']],
        ['label' => 'Contact', 'url' => ['/site/contact']],
        Yii::$app->user->isGuest ?
            ['label' => 'Login', 'url' => ['/site/login']] :
            ['label' => 'Logout (' . Yii::$app->user->identity->username . ')',
                'url' => ['/site/logout'],
                'linkOptions' => ['data-method' => 'post']],
    ],
]);
NavBar::end();

这将从Yii2中删除jquery.js。如果可以,我建议你从MooTools切换到Jquery。它让你的生活更轻松。

答案 2 :(得分:1)

HERE您可以通过将false与其关联来禁用 jQuery资产包

return [
    // ...
    'components' => [
        'assetManager' => [
            'bundles' => [
                'yii\web\JqueryAsset' => false,
            ],
        ],
    ],
];

但你需要考虑许多from docs将停止工作。

我对Mootools了解不多,但是如果它支持AJAX并且你正在建立一个完整的前端,那么你也可以考虑使用jQuery built in widgets