链接:http://www.yiichina.com/tutorial/399

(注:以下为Yii2.0高级应用测试)

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

视图如何按需加载CSS/JS ?

资源包定义:

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' => 'api\assets\AppAsset']);
} //定义按需加载css方法,注意加载顺序在最后
public static function addCss($view, $cssfile) {
$view->registerCssFile($cssfile, [AppAsset::className(), 'depends' => 'api\assets\AppAsset']);
}
} 视图中如何使用: 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,该如何做? 1,在页面中单独写样式: $cssString = ".gray-bg{color:red;}";
$this->registerCss($cssString); 2,在页面中单独写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); ?> 在视图中引入不是定义在全局里的CSS或JS。 分别有两种方法: 方法1,在资源包管理器里面定义一个方法,然后在视图中注册即可(推荐使用这种) 如上面代码己定义: //定义按需加载JS方法,注意加载顺序在最后
public static function addScript($view, $jsfile) {
$view->registerJsFile($jsfile, [AppAsset::className(), 'depends' => 'api\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'=>['api\assets\AppAsset']]); $this->registerJsFile('@web/js/jquery-ui.custom.min.js',['depends'=>['api\assets\AppAsset']]);
//$this->registerJsFile('@web/js/jquery-ui.custom.min.js',['depends'=>['api\assets\AppAsset'],'position'=>$this::POS_HEAD]); //以上定义两种有点区别,见下图
加载在body区
输入图片说明 加载在head中
输入图片说明 博客源文地址:
http://blog.csdn.net/maclechan/article/details/45803821

yii2.0 如何按需加载并管理CSS样式及JS脚本的更多相关文章

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

    一.资源包定义 Yii2对于CSS/JS 管理,使用AssetBundle资源包类. 创建如下: backend/assets/AppAsset.php namespace backend\asset ...

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

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

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

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

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

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

  5. React Router 4.0 + webpack 实现组件按需加载

    网上关于React Router 4.0的按需加载文章有很多,大致的思路都一样,但是其实具体实现起来却要根据自己的实际情况来定,这里主要介绍一下我的实现方式. 主要方式是通过Route组件的rende ...

  6. antd按需加载,配置babel-plugin-import插件,编译后报错.bezierEasingMixin()解决方案

    报错如下: ./node_modules/antd/lib/button/style/index.less (./node_modules/css-loader??ref--6-oneOf-7-1!. ...

  7. 前端性能优化之按需加载(React-router+webpack)

    一.什么是按需加载 和异步加载script的目的一样(异步加载script的方法),按需加载/代码切割也可以解决首屏加载的速度. 什么时候需要按需加载 如果是大文件,使用按需加载就十分合适.比如一个近 ...

  8. 仿ElementUI构建自己的Vue组件库用babel-plugin-component按需加载组件及自定义SASS主题

    最近使用ElementUI做项目的时候用Babel的插件babel-plugin-component做按需加载,使得组件打包的JS和CSS包体积大大缩小,加载速度也大大提升,所有想模仿做一个组件库也来 ...

  9. Vue按需加载提升用户体验

    Vue官方文档异步组件: 在大型应用中,我们可能需要将应用拆分为多个小模块,按需从服务器下载.为了让事情更简单, Vue.js 允许将组件定义为一个工厂函数,动态地解析组件的定义.Vue.js 只在组 ...

随机推荐

  1. Understanding the difficulty of training deep feedforward neural networks

    本文作者为:Xavier Glorot与Yoshua Bengio. 本文干了点什么呢? 第一步:探索了不同的激活函数对网络的影响(包括:sigmoid函数,双曲正切函数和softsign y = x ...

  2. 在安装ZooKeeper之前,请确保你的系统是在以下任一操作系统上运行

    在安装ZooKeeper之前,请确保你的系统是在以下任一操作系统上运行: 任意Linux OS - 支持开发和部署.适合演示应用程序. Windows OS - 仅支持开发. Mac OS - 仅支持 ...

  3. new/delete 的使用要点

    运算符 new 使用起来要比函数 malloc 简单得多,例如: int *p1 = (int *)malloc(sizeof(int) * length); int *p2 = new int[le ...

  4. 优矿众包对冲基金计划”优选策略---100w实盘资金管理权!!

    https://uqer.io/contest/ http://www.cnblogs.com/dunitian/p/4939369.html 优连

  5. 比較JS合并数组的各种方法及其优劣

    原文链接:  Combining JS Arrays原文日期: 2014-09-09翻译日期: 2014-09-18翻译人员: 铁锚 本文属于JavaScript的基础技能. 我们将学习结合/合并两个 ...

  6. C++字符串转化为数字的库函数

    原文链接:http://blog.csdn.net/tsinfeng/article/details/5844838 1.atoi 功 能:把一字符串转换为整数 用 法:int atoi(const ...

  7. android 沉浸式状态栏(像ios那样的状态栏与应用统一颜色样式)

    这个特性是andorid4.4支持的,最少要api19才干够使用.以下介绍一下使用的方法,很得简单: 添加一个demo源代码: https://github.com/ws123/StatusDemo ...

  8. Ubuntu Server 下配置静态网络的方法

    这几天一直在弄hadoop的集群,由于公司的网络原因,偶尔要重启路由器,如果网络是由路由器自动配置的话, 非常容易变换IP,这样的话,SSH无密码验证登陆到其他机器发送的配置文件*.pub就用不了,因 ...

  9. 移动端web开发技巧 -- 转载

    META相关 1. 添加到主屏后的标题(IOS)<meta name="apple-mobile-web-app-title" content="标题"& ...

  10. NHibernate连接oracle报错

    NHibernate.Exceptions.GenericADOException:“could not execute query [ select sys_user0_.USERID as USE ...