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 PDO中文乱码解决办法
Jul 20 PHP
优化PHP代码技巧的小结
Jun 02 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
利用中国天气预报接口实现简单天气预报
Jan 20 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
PHP递归算法的简单实例
Feb 28 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
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
Python实现基于权重的随机数2种方法
2015/04/28 Python
Python可变参数用法实例分析
2017/04/02 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
python实现电脑自动关机
2018/06/20 Python
详解Django模版中加载静态文件配置方法
2019/07/21 Python
python Django 创建应用过程图示详解
2019/07/29 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
学习委员自我鉴定
2014/01/13 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
村庄绿化方案
2014/05/07 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
2014年技术员工作总结
2014/11/18 职场文书
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android