3 Yii2.0灵活使用AppAssets管理CSS样式及JS脚本
2015-05-18 00:17
459 查看
(注:以下为Yii2.0高级应用测试)
Yii2.0对于CSS/JS 管理,使用AssetBundle资源包类。
视图如何按需加载CSS/JS ?
资源包定义:
backend/assets/AppAsset.php
可以看出以此顺序为:依赖关系 ->
自定义全局CSS/JS
如果,某个视图需要单独引入一个CSS/JS,并且,在页面中还要写些CSS/JS,该如何做?
1,在页面中单独写样式:
2,在页面中单独写JS(使用数据块)
另一种方式:
在视图中引入不是定义在全局里的CSS或JS。
分别有两种方法:
方法1,在资源包管理器里面定义一个方法,然后在视图中注册即可(推荐使用这种)
如上面代码己定义:
视图中使用如下:
查看下源码,特别的注意下,加载的顺序,是我们想要的结果
此外注意:在上面的addScript方法中,如果没有 ’depends‘=>’xxx‘ ,此处加载的顺序将会颠倒。
方法2,不需要在资源包管理器中定义方法,只要在视图页面直接引入即可
加载在body区
加载在head中
Yii2.0对于CSS/JS 管理,使用AssetBundle资源包类。
视图如何按需加载CSS/JS ?
资源包定义:
backend/assets/AppAsset.php
<?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']); } }视图中如何使用:
<?php 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); ?> <?php $this->registerJsFile('@web/inspinia/js/inspinia.js',['depends'=>['yii\bootstrap\BootstrapAsset']]) ?>
另一种方式:
$this->registerJs( '$("document").ready(function(){ $("#login-form").validate({ errorElement : "small", errorClass : "error", rules: { "AgNav[id]": { required: true, }, }, messages:{ "AgNav[id]" : { required : "此字段不能为空.", }, } }); });' );
在视图中引入不是定义在全局里的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中
相关文章推荐
- yii2.0 如何按需加载并管理CSS样式及JS脚本 [ 2.0 版本 ]
- 7 yii2.0小部件管理布局的高级使用
- yii2.0 灵活使用AssetBundle管理CSS样式及JS脚本
- 使用AJAX动态加栽JS脚本和CSS样式
- 前端标签的小技巧-----自定义标签属性(灵活使用js/JQ脚本)
- YII2框架中使用yii.js实现的post请求
- linux基础2-5使用逻辑卷管理器管理灵活存储
- Linux下使用逻辑卷管理器管理灵活存储
- 5.使用逻辑卷管理器管理灵活存储 lvm
- yii2.0 Activeform表单部分组件使用方法
- 基于vue.js 2.0,不使用webpack的nodejs服务,只在浏览器上单独使用在Element UI的Tree树形控件
- 使用函数封装-公司自动化处理文件备份管理脚本
- 基于vue.js 2.0,不使用webpack,只在浏览器上单独使用Element UI的Table表格控件完成增删改查页面
- 详解Vue.js 2.0 如何使用axios
- 详解nodejs express下使用redis管理session
- 第二课unit5 使用逻辑卷管理器管理灵活存储
- Yii 2.0风格加载自定义类或命名空间 [配置使用Yii autoloader]
- unit2.5 使用逻辑卷管理器管理灵活存储
- 使用逻辑卷管理器管理灵活存储
- Linux学习第五单元-使用逻辑卷管理器管理灵活存储