首页 > 开发 > Php > 正文

yii2 页面底部加载css和js的技巧

2020-02-21 20:53:06
字体:
来源:转载
供稿:网友

一般来说,网页内部的js文件或代码,都是放置在网页底部</body>的前面,这是因为网页自上而下加载,用户在访问我们页面的时候尽量不要因为加载js展现过长时间的空白页面,停留时间过长就白白流失了用户量。

yii2中是集成了jQuery的,而且jQuery文件是加载在页面底部的,因此,如果我们的js代码段不在页面底部加载,就很大可能会发生$未定义的友好提示。

我这废话一大堆得毛病确实需要去挂个号看看了...

先来看看js代码段怎么处理

 <?php$this->registerJs('$(function () {//为所欲为的写你想要写的js代码吧$......});', /yii/web/View::POS_END);

对,就是用上面的registerJs方法注册,有小伙伴听不懂了,啥是注册,简单理解就是把你的js代码放置在你想要放的页面位置。

第一个参数嘛,很好理解,就是我们要写的js代码块。第二个参数就是我们需要指定代码块插入在页面的具体位置了。

第二个参数这里只讨论 /yii/web/View::POS_END,意思就是页面底部</body>之前插入。

当然还有第三个参数,意思是js代码块的一个id标示,不指定会默认生成,此处忽略。

 哦对了,上面的$this不要混淆,这里是指yii/web/View对象

接下来一起看看怎么引入外部的js文件。

官网的例子是这样给的

 $this->registerJsFile('http://example.com/js/main.js', ['depends' => [/yii/web/JqueryAsset::className()]]); 

但是人家说了,我们不建议这么用,这样依赖来依赖去关系复杂。

好了,我们来看看怎么使用包管理asset bundles进行注册吧。

我们先打开文件 backend/assets/AppAsset.php文件瞅瞅是什么高大上的东西,我擦,果然高深,我张作完全看不懂的样子,完了,下面没法写了,看不懂怎么讲,回归正题,我们要抓紧时间扩展下。

我们在AppAsset类里添加了两个静态方法,完整版的AppAsset类如下:

 namespace backend/assets;use yii/web/AssetBundle;/** * @author Qiang Xue <qiang.xue@gmail.com> * @since 2.0 */class AppAsset extends AssetBundle{  public $basePath = '@webroot';  public $baseUrl = '@web';  public $css = [    'css/site.css',  ];  public $js = [  ];  public $depends = [    'yii/web/YiiAsset',    'yii/bootstrap/BootstrapAsset',  ];  //定义按需加载JS方法,注意加载顺序在最后   public static function addScript($view, $jsfile) {     $view->registerJsFile($jsfile, [AppAsset::className(), 'depends' => 'backend/assets/AppAsset']);   }   //定义按需加载css方法,注意加载顺序在最后   public static function addCss($view, $cssfile) {     $view->registerCssFile($cssfile, [AppAsset::className(), 'depends' => 'backend/assets/AppAsset']);   } }            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表