Yii2 加载css、js 载静态资源的方法


Posted in PHP onMarch 10, 2017

应用场景

Yii2提供了AppAsset类管理静态资源,在使用Yii2 布局模板时,如果想在某个页面内部写一段js 并且在页面底部,如果直接使用 script 标签是不可以的。

使用AppAsset类管理静态资源

打开assetsAppAsset.php,定义 addJs(),addCss() 分别用于在静态页面引入外部js、css 文件

1、修改AppAsset.php文件代码

namespace backend\assets;
use yii\web\AssetBundle;
/**
 * @author Qiang Xue 
 * @since 2.0
 */
class AppAsset extends AssetBundle
{
  public $basePath = "@webroot";
  public $baseUrl = "@web";
  //默认自动加载样式
  public $css = [
    "css/site.css",
  ];
  //默认自动加载js
  public $js = [
  ];
  //依赖关系管理
  public $depends = [
    "yii\web\YiiAsset",
    "yii\bootstrap\BootstrapAsset",
  ];  
  //定义按需加载JS方法,注意加载顺序在最后 
  public static function addJs($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"
      ]
    ); 
  } 
}

2、在静态页面调用AppAsset.php

<?php

use backend\assets\AppAsset;
AppAsset::register($this);
AppAsset::addJs($this,Yii::$app->request->baseUrl."/js/a.js");
AppAsset::addCss($this,Yii::$app->request->baseUrl."/css/b.css");
?>

在网站页面底部加载javascript代码

网页内部的js文件或代码,根据页面加载顺序,避免执行js时间过程导致页面空白,导致用户体验不好问题。一般放置在网页底部</body>的后面。

方案一

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

方案二

<?php $this->beginBlock('js') ?> 

  //js代码
  
<?php $this->endBlock() ?> 
<?php $this->registerJs($this->blocks['js'], \yii\web\View::POS_END); ?>

解决Yii2在页面底部加载JS,语法提示失效

加入script 标签即可,注意只有 方案二有效,知道有其他方法的 ,望告知,谢谢!

<script type="text/javascript">
<?php $this->beginBlock('js') ?> 

  //js代码
  
<?php $this->endBlock() ?> 
<?php $this->registerJs($this->blocks['js'], \yii\web\View::POS_END); ?> 
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP 和 COM
Oct 09 PHP
支持oicq头像的留言簿(一)
Oct 09 PHP
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
php更改目录及子目录下所有的文件后缀的代码
Sep 24 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
Jan 07 PHP
PHP函数eval()介绍和使用示例
Aug 20 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
php使用QueryList轻松采集js动态渲染页面方法
Sep 11 PHP
php7连接MySQL实现简易查询程序的方法
Oct 13 PHP
php pdo操作数据库示例
Mar 10 #PHP
yii2简单使用less代替css示例
Mar 10 #PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 #PHP
Yii2.0中使用js异步删除示例
Mar 10 #PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 #PHP
PHP用户管理中常用接口调用实例及解析(含源码)
Mar 09 #PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 #PHP
You might like
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
小试JQuery的AutoComplete插件
2011/05/04 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
2015/01/19 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
PyTorch预训练的实现
2019/09/18 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
幼儿教师个人求职信范文
2013/09/21 职场文书
教师档案管理制度
2014/01/23 职场文书
大学生创业感言
2014/01/25 职场文书
法学自荐信
2014/06/20 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android