yii2.0 如何按需加载并管理CSS样式及JS脚本
链接: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脚本的更多相关文章
- 转载 yii2-按需加载并管理CSS样式/JS脚本
一.资源包定义 Yii2对于CSS/JS 管理,使用AssetBundle资源包类. 创建如下: backend/assets/AppAsset.php namespace backend\asset ...
- yii2-按需加载并管理CSS样式/JS脚本
原文地址:https://segmentfault.com/a/1190000003742452
- 转:按需加载html 图片 css js
按需加载是前端性能优化中的一项重要措施,按需加载是如何定义的呢?顾名思义,指的是当用户触发了动作时才加载对应的功能.触发的动作,是要看具体的业务场景而言,包括但不限于以下几个情况:鼠标点击.输入文字. ...
- YII2-按需加载并管理静态资源(CSS,JS)
参考博客: https://segmentfault.com/a/1190000003742452#articleHeader5
- React Router 4.0 + webpack 实现组件按需加载
网上关于React Router 4.0的按需加载文章有很多,大致的思路都一样,但是其实具体实现起来却要根据自己的实际情况来定,这里主要介绍一下我的实现方式. 主要方式是通过Route组件的rende ...
- antd按需加载,配置babel-plugin-import插件,编译后报错.bezierEasingMixin()解决方案
报错如下: ./node_modules/antd/lib/button/style/index.less (./node_modules/css-loader??ref--6-oneOf-7-1!. ...
- 前端性能优化之按需加载(React-router+webpack)
一.什么是按需加载 和异步加载script的目的一样(异步加载script的方法),按需加载/代码切割也可以解决首屏加载的速度. 什么时候需要按需加载 如果是大文件,使用按需加载就十分合适.比如一个近 ...
- 仿ElementUI构建自己的Vue组件库用babel-plugin-component按需加载组件及自定义SASS主题
最近使用ElementUI做项目的时候用Babel的插件babel-plugin-component做按需加载,使得组件打包的JS和CSS包体积大大缩小,加载速度也大大提升,所有想模仿做一个组件库也来 ...
- Vue按需加载提升用户体验
Vue官方文档异步组件: 在大型应用中,我们可能需要将应用拆分为多个小模块,按需从服务器下载.为了让事情更简单, Vue.js 允许将组件定义为一个工厂函数,动态地解析组件的定义.Vue.js 只在组 ...
随机推荐
- ubuntu16.04 安装caffe以及python接口
http://blog.csdn.net/qq_25073253/article/details/72571714http://blog.csdn.net/greed7480/article/deta ...
- C# 属性事件一些设置说明
大致列举一些常用的属性或事件的一些修饰 用法类似,主要是对属性的进一步设置 [Browsable(true)] public bool Enable {get;set;} 顺便说一下事件的应用: pu ...
- (转)关于三星cortex A9 Sate4412 开发板 uboot 启动的一些问题释疑
说明:本文转载自:http://blog.csdn.net/gooogleman/article/details/17238079 作者:gooogleman 日 ...
- nodejs基础 -- Stream流
nodejs 的 Stream 是一个抽象接口,node中有很多对象实现了这个接口.例如,对http服务器发起请求的request对象就是一个Stream,还有stdout(标准输出)也是一个Stre ...
- Yii2框架加入API Modules
一.环境部署 1. read fucking Yii Documents. http://www.yiichina.com/doc/guide/2.0 2. 了解依赖注入模式 Java描写叙述: ht ...
- 《Java程序猿面试笔试宝典》之组合与继承有什么差别
组合和继承是面向对象中两种代码复用的方式. 组合是指在新类里面创建原有类的对象,反复利用已有类的功能.继承是面向对象的主要特性之中的一个,它同意设计人员依据其他类的实现来定义一个类的实现. 组合和继承 ...
- 做游戏长知识------基于行为树与状态机的游戏AI(一)
孙广东 2014.6.30 AI. 我们的第一印象可能是机器人,如今主要说在游戏中的应用. 现代的计算机游戏中已经大量融入了AI元素,平时我们进行游戏时产生的交互都是由AI来完毕的.比方在RPG游戏中 ...
- iftop、ifstat详解
ifstat 介绍 ifstat工具是个网络接口监测工具,比较简单看网络流量 实例 默认使用 #ifstat eth0 eth1 KB/s in KB/s out KB/s in KB/s out 0 ...
- 安装SQL Server 2008数据库(带完整图解)
方法/步骤 1 双击sql server 2008的.exe安装文件,进入[SQL Server 安装中心]. 2 点击界面左侧的[安装],然后点击右侧的[全新SQL Server 独立安装或向现 ...
- VC++:Debug出错,提示错误在findfile.cpp (Line 369)
调试程序的Debug版本,出现断言框,定位于库文件findfile.cpp 第369行: void CFileFind::AssertValid() const { // if you trip th ...