我对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>发布于 2016-07-25 11:44:53
只需向bundle类添加一行即可。
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'
];
}或者,您也可以使用配置数组而不是字符串(警告:第一个元素必须是文件名)在header部分指定您想要的文件。
class AppAsset extends \yii\web\AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
public $js = [
'this_file_will_be_at_end.js', // The default position
['but_this_will_be_at_header.js', 'position' => \yii\web\View::POS_HEAD],
['and_this_too.js', 'position' => \yii\web\View::POS_HEAD]
];
}发布于 2016-07-25 11:19:36
若要在页面的head部分中包含JavaScript文件(默认情况下,JavaScript文件包含在正文部分的末尾),请使用以下选项:
public $jsOptions = ['position' => \yii\web\View::POS_HEAD];或者直接看到
$this->registerJs('js/myjsfile.js', $this::POS_HEAD);你可以看到http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html
http://www.yiiframework.com/doc-2.0/guide-structure-assets.html
https://stackoverflow.com/questions/38566194
复制相似问题