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+MYSQL的文章管理系统(一)
Oct 09 PHP
PHP经典的给图片加水印程序
Dec 06 PHP
PHP 数字左侧自动补0
Mar 31 PHP
PHP GD 图像处理组件的常用函数总结
Apr 28 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
php身份证号码检查类实例
Jun 18 PHP
php生成与读取excel文件
Oct 14 PHP
PHP三种方式实现链式操作详解
Jan 21 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
Feb 10 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 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
Zend Guard一些常见问题解答
2008/09/11 PHP
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
php学习笔记之面向对象编程
2012/12/29 PHP
解析PHP的session过期设置
2013/06/29 PHP
php统计文章排行示例
2014/03/04 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
10个php函数实用却不常见
2015/10/13 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
2018/03/02 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
Python脚本实现集群检测和管理功能
2015/03/06 Python
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
Python面向对象程序设计示例小结
2019/01/30 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
大学生应聘导游自荐信
2014/06/02 职场文书
树转促学习心得体会
2014/09/10 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
2014年终工作总结范本
2014/12/15 职场文书