一般来说,网页内部的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