如何在head标签内注册jQuery资产?

时间:2016-07-25 11:10:39

标签: jquery yii yii2

我不熟悉Yii2资产包。 Yii2资产包在页面顶部注册css文件,在页面底部注册js文件。但是如何在页面顶部包含这些js文件呢?

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

我只需要在页面顶部注册所有js和css文件。使用AppAsset,它是否可行?

修改

默认注册脚本

<head>
....
<link href="/assets/4850c11c/css/bootstrap.css" rel="stylesheet">
....
</head>
<body>
.....
<script src="/assets/76016e7c/jquery.js"></script>
.....
</body>

我只需要

<head>
....
<link href="/assets/4850c11c/css/bootstrap.css" rel="stylesheet">
<script src="/assets/76016e7c/jquery.js"></script>
....
</head>

2 个答案:

答案 0 :(得分:5)

要在页面的head部分包含JavaScript文件(默认情况下,JavaScript文件包含在body部分的末尾),请使用以下选项:

def get_uniq_worker_ips(workers):
    wip = set(w.split(':')[0] for w in workers.iterkeys())
    return [next(worker for worker in workers.iterkeys() if worker.startswith(w)) for w in wip]

或直接在视野中

<script type="text/javascript">
        document.body.style.visibility = 'visible'
</script>

您可以看到http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html

http://www.yiiframework.com/doc-2.0/guide-structure-assets.html

答案 1 :(得分:5)

只需在捆绑类中添加一行。

public $jsOptions = ['position' => \yii\web\View::POS_HEAD];

您的代码将如下所示:

class AppAsset extends \yii\web\AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $jsOptions = ['position' => \yii\web\View::POS_HEAD];

    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];

    public $js = [
        'somefile.js'
    ];
}