一般来说,网页内部的js文件或代码,都是放置在网页底部</body>的前面,这是因为网页自上而下加载,用户在访问我们页面的时候尽量不要因为加载js展现过长时间的空白页面,停留时间过长就白白流失了用户量。
yii2中是集成了jQuery的,而且jQuery文件是加载在页面底部的,因此,如果我们的js代码段不在页面底部加载,就很大可能会发生$未定义的友好提示。
以后台为例:
1,修改: frontend/assets/AppAsset.php
<?php
namespace frontend\assets;
use yii\web\AssetBundle;
/**
* Main frontend application asset bundle.
*/
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
//这里是全局的
public $css = [
'css/site.css',
];
//这里是全局的
public $js = [
];
//这里是全局的bootstrap样式
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
//追加这里2个函数
//定义按需加载JS方法 ,注意加载顺序在最后
public static function addScript($view, $jsfile) {
$view->registerJsFile($jsfile, [AppAsset::className(), 'depends' => 'frontend\assets\AppAsset']);
}
//定义按需加载css方法,注意加载顺序在最后
public static function addCss($view, $cssfile) {
$view->registerCssFile($cssfile, [AppAsset::className(), 'depends' => 'frontend\assets\AppAsset']);
}
}
2,在你想调用的页面引用就可以了(注:因为main.php是个公共页面,如果在这里使用了,则变成全部的了)
<?php
/**
* Created by PhpStorm.
* User: niwoxuexi.com
* Date: 2017/6/22
* Time: 18:07
*/
use frontend\assets\AppAsset;
$this->title = '你我学习网';
AppAsset::addScript($this,'@web/assets/js/test.js');
?>
<div>
hello world!
</div>
标签:
yii2引用js