我不熟悉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>
答案 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'
];
}