一、资源包定义

Yii2对于CSS/JS 管理,使用AssetBundle资源包类。

创建如下:

backend/assets/AppAsset.php

namespace backend\assets;

use yii\web\AssetBundle;

/**

* @author chan <maclechan@qq.com>

* @since 2.0

*/

class AppAsset extends AssetBundle

{

public $basePath = '@webroot';

public $baseUrl = '@web';

//全局CSS

public $css = [

'css/animate.css',

'css/style.min.css',

];

//全局JS

public $js = [

'js/jquery-2.1.1.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']);

}

}

二、视图使用:

1. 视图(或布局)使用全局CSS/JS

use yii\helpers\Html;

use backend\assets\AppAsset;

use backend\widgets\Alert;

/* @var $this \yii\web\View */

/* @var $content string */

AppAsset::register($this);

查看源文件,看清CSS和JS的加载顺序

可以看出以此顺序为:依赖关系 -> 自定义全局CSS/JS

如果,某个视图需要单独引入一个CSS/JS,并且,在页面中还要写些CSS/JS,该如何做?

2. 在页面中单独写样式

$cssString = ".gray-bg{color:red;}";

$this->registerCss($cssString);

3. 在页面中单独写JS(使用数据块)

<div id="mybutton">点我弹出OK</div>

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

$(function($) {

$('#mybutton').click(function() {

alert('OK');

});

});

<?php $this->endBlock() ?>

<?php $this->registerJs($this->blocks['test'], \yii\web\View::POS_END); ?>

或者:

<?php

$this->registerJs(

'$("document").ready(function(){

$("#login-form").validate({

errorElement : "small",

errorClass : "error",

rules: {

"AgNav[nav_cn]": {

required: true,

},

},

messages:{

"AgNav[nav_cn]" : {

required : "此字段不能为空.",

},

}

});

});'

);

?>

4.视图中引入CSS/JS文件

然后再说下在视图中如何引入一个CSS/JS文件(不是定义在全局里的CSS或JS)

分别有两种方法:

方法1

在资源包管理器里面定义一个方法,然后在视图中注册即可(推荐使用这种)

如上面代码己定义:

//定义按需加载JS方法,注意加载顺序在最后

public static function addScript($view, $jsfile) {

$view->registerJsFile($jsfile, [AppAsset::className(), 'depends' => 'backend\assets\AppAsset']);

}

视图中使用如下

AppAsset::register($this);

//只在该视图中使用非全局的jui

AppAsset::addScript($this,'@web/js/jquery-ui.custom.min.js');

//AppAsset::addCss($this,'@web/css/font-awesome/css/font-awesome.min.css');

查看下源码,特别的注意下,加载的顺序,是我们想要的结果

此外注意:在上面的addScript方法中,如果没有 ’depends‘=>’xxx‘ ,此处加载的顺序将会颠倒。

方法2

不需要在资源包管理器中定义方法,只要在视图页面直接引入即可

AppAsset::register($this);

//css定义一样

$this->registerCssFile('@web/css/font-awesome.min.css',['depends'=>['backend\assets\AppAsset']]);

$this->registerJsFile('@web/js/jquery-ui.custom.min.js',['depends'=>['backend\assets\AppAsset']]);

//如下position是让定义CSS/JS出现的位置

//$this->registerJsFile('@web/js/jquery-ui.custom.min.js',['depends'=>['backend\assets\AppAsset'],'position'=>$this::POS_HEAD]);

原文转载 自 http://www.wtoutiao.com/p/1f6qEX6.html

转载 yii2-按需加载并管理CSS样式/JS脚本的更多相关文章

  1. yii2-按需加载并管理CSS样式/JS脚本

    原文地址:https://segmentfault.com/a/1190000003742452

  2. yii2.0 如何按需加载并管理CSS样式及JS脚本

    链接:http://www.yiichina.com/tutorial/399 (注:以下为Yii2.0高级应用测试) Yii2.0对于CSS/JS 管理,使用AssetBundle资源包类. 视图如 ...

  3. Yii2按需加载图片怎么做?

    按需加载图片应该用 jQuery LazyLoad 图片延迟加载按需加载文件夹应该用 Yii::import

  4. 转:按需加载html 图片 css js

    按需加载是前端性能优化中的一项重要措施,按需加载是如何定义的呢?顾名思义,指的是当用户触发了动作时才加载对应的功能.触发的动作,是要看具体的业务场景而言,包括但不限于以下几个情况:鼠标点击.输入文字. ...

  5. 关于前端本地压缩图片,兼容IOS/Android/PC且自动按需加载文件之lrz.bundle.js

    一.介绍说明主要特点: ①在前端压缩好要上传的图片可以更快的发送给后端,因此也特别适合在移动设备上使用. ②兼容IOS/Android,修复了IOS/Android某些版本已知的BUG. ③按需加载文 ...

  6. 用javascript预加载图片、css、js的方法研究

    预加载的好处可以让网页更快的呈现给用户,缺点就是可能会增加无用的请求(但图片.css.js这些静态文件可以被缓存),如果用户访问的页面里面的css.js.图片被预加载了,用户打开页面的速度会快很多,提 ...

  7. YII2-按需加载并管理静态资源(CSS,JS)

    参考博客: https://segmentfault.com/a/1190000003742452#articleHeader5

  8. 判断不同浏览器,加载不同的css和js文件

    在低版本的IE中,条件注释还有效果,但是在ie9,10,11浏览器中,条件注释不起作用. 在网上找了个校验ie的方法. function isIE(){  if (window.ActiveXObje ...

  9. Node.js 加载静态资源css,js等不显示问题的解决方法

    一,原因 1,没有响应到css等文件 2,响应类型是由文件的后缀名决定 (1)html的请求头 Content-Type : text/html ; charset=utf-8 (2) CSS的请求头 ...

随机推荐

  1. Android 绘制计时器

    用小米的手机,发现其实还可以,无意间点开小米的计时器,发现界面非常好看和实用.于是自己仿照着写一个,由于技术不好,代码整体结构上可能有点乱,但主要的实现功能和掌握知识点. Android中绘制采用ca ...

  2. linux(centos)如何查看文件夹大小

    参考http://zhidao.baidu.com/link?url=OrfDgdHvyA1pSDAy6ql-IgPBWtvcS5AR9bc543zTr1hLIDfCd42nYtNBplAl2pHvM ...

  3. 聊聊 Statsd 和 Collectd 那点事!

    StatsD 是由 Etsy 开发并发布的汇总和总结应用指标的一个简单的守护进程,近些年来发展迅速,已经变成了一个用于收集应用性能指标的统一的协议. 关于 Statsd 的使用已经有很多文章介绍过,所 ...

  4. table 表头固定

    <html> <head> <title>Test</title> <style type="text/css"> .d ...

  5. UIcollectionView的使用(首页的搭建4)

    2.5 头部视图

  6. ArcGis 在线地图相关资源

    原文:ArcGis 在线地图相关资源 世界边界和地点:http://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Bou ...

  7. 【HDOJ】3505 Writing Robot

    挺好的一道题目,我的做法是kmp+Dinic网络流.kmp求子串在P中出现的次数,从而计算love值.网络流主要用来处理最优解.case2中p1的love值是8,p2的love值是7,最终T包含p1和 ...

  8. 【 D3.js 选择集与数据详解 — 1 】 使用datum()绑定数据

    选择集和数据的关系是 D3 最重要的基础,在[入门 - 第 7 章]时进行过些许讲解,对于要掌握好 D3 是远远不够的.故此开设一个新的分类,专门讨论选择集与数据的关系,包括数据绑定的使用和工作原理, ...

  9. GitHub常用 库

    来自: http://www.jianshu.com/p/6475c90e8b4d 网络请求库 https://github.com/AFNetworking/AFNetworking https:/ ...

  10. 解决eclipse闪退的办法

    Eclipse Java EE 便出现打开闪退的现象. 修改eclipse.ini无效,参照了网上许多方法也不行. 最后发现了一个蛋疼的方法: 1.打开eclipse的workspace目录 2.删除 ...