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 相关文章推荐
一个颜色轮换的简单例子
Oct 09 PHP
php采集速度探究总结(原创)
Apr 18 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
PHP has encountered an Access Violation at 7C94BD02解决方法
Aug 24 PHP
10 个经典PHP函数
Oct 17 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
php实现html标签闭合检测与修复方法
Jul 09 PHP
PHP开发中常用的十个代码样例
Feb 02 PHP
php根据数据id自动生成编号的实现方法
Oct 16 PHP
PHP中CheckBox多选框上传失败的代码写法
Feb 13 PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 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处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
jQuery 表格工具集
2010/04/25 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
Python下Fabric的简单部署方法
2015/07/14 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
python实现Adapter模式实例代码
2018/02/09 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
python3 爬取图片的实例代码
2018/11/06 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
联想中国官方商城:Lenovo China
2017/10/18 全球购物
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
干部行政关系介绍信
2014/01/17 职场文书
大学军训感言800字
2014/02/27 职场文书
销售会计岗位职责
2014/03/15 职场文书
企业承诺书格式范文
2015/04/28 职场文书
节约用电倡议书
2015/04/28 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL