Yii 2 —— 资源管理(Assets)

1.1  资源管理(Assets)

1.1.1  基本说明

参考文档:

1、http://www.yiichina.com/tutorial/399

2、http://yii2.techbrood.com/guide-assets.html

3、http://www.yiifans.com/yii2/guide/structure-assets.html

Yii2.0对于CSS/JS 管理,使用AssetBundle资源包类。视图如何按需加载CSS/JS ?

在页面中使用预先定义好的资源包类,譬如:backend/assets/AppAsset.php,使用到的CSS/JS都放在资源包里。AppAsset.php代码:


class AppAsset extends AssetBundle
 {
     public $basePath = ‘@webroot‘;
     public $baseUrl = ‘@web‘;
     public $css = [
         ‘css/site.css‘,
     ];
     public $js = [
     ];
     public $depends = [
         ‘yii\web\YiiAsset‘,
         ‘yii\bootstrap\BootstrapAsset‘,
     ];
 }

说明:

  • $css:引入页面的CSS文件
  • $js:引入页面的JS文件
  • $depends:引入依赖的前端库

在加载时,$depends中的前端库先加载,$css和$js中的文件后加载。一般来说,CSS放在<head></head>中加载,JS在<body></body>的底部加载。CSS/JS文件的路径,存放在$basePath参数所指定的目录下,$css/$js参数指定的是相对路径。在$depends中配置的依赖库会先加载。

使用这种方式管理前端资源,感觉比Yii 1中的方式清爽很多,使用时,在view的文件中增加代码:


<?php
 
 
/* @var $this  \yii\web\View */
 /* @var $content string */
 
 
use backend\assets\AppAsset;
 use yii\helpers\Html;
 use yii\bootstrap\Nav;
 use yii\bootstrap\NavBar;
 use yii\widgets\Breadcrumbs;
 use common\widgets\Alert;
 
 AppAsset::register($this);
 ?>

1.1.2  资源发布

在Yii的backend/web和front/web目录下,均有assets子目录,下面有一些貌似随机数字和字符组成的目录,里面放的是一些前端库的代码,譬如jquery、bootstrap等,这些子目录在应用最开始运行之前是没有的,只是访问了某些页面后就有了,这是怎么回事呢?

这是因为一些前端库保存的目录,在web下是不能直接被访问的,为了保证页面中可以正常使用,Yii会将这些库的文件拷贝到assets目录下。

哪些前端库会被拷贝呢?

这个取决于资源包的php文件中是否配置了$sourcePath参数,只有配置了$sourcePath参数,并且没有配置$basePath和$baseUrl的,在执行时前端库就会被拷贝到assets目录下,并且以源目录的hash值建立子目录。

资源更新了怎么办?

在AssetManager->hash()函数中,它是根据源目录/文件名+更新时间做hash的,所以,如果更新时间发生了变化,就会计算出新的hash值,而新的hash值所表示的目录在assets目录下不存在,因此就会建立新的目录,并且拷贝更新后的资源文件到新的目录下。

这样做有几个问题:

1、assets目录下的子目录可能会越来越多,存在很多垃圾目录;

解决办法:定期清除assets下的子目录。

2、更新源目录下子目录内的资源,源目录的更新时间不会改变,导致资源不会被发布;

解决办法:发布后清除assets下的子目录。

1.1.3  常用前端库

在Yii 2中,常用的前端库:



版本号


资源包


实际资源路径


bootstrap


3.3.7


BootstrapAsset.php


vendor\bower\bootstrap\dist


jquery


2.2.4


JqueryAsset


vendor\bower\jquery\dist

注:BootstrapAsset中,只引入了bootstrap.css,没有引入bootstrap.js,估计是为了性能吧。

时间: 2024-10-29 10:46:18

Yii 2 —— 资源管理(Assets)的相关文章

YII assets使用

为什么用YII assets 1.assets的作用是方便模块化,插件化的,一般来说出于安全原因不允许通过url访问protected下面的文件 ,但是我们又希望将module单独出来,所以需要使用发布,即将一个目录下的文件复制一份到assets下面方便通过url访问 $assets = Yii::getPathOfAlias('ext').'/css'; //$baseUrl = Yii::app()->getAssetManager()->publish($assets); $baseUr

yii学习笔记

1.安装yii 2.创建站点: D:\AppServ\www\yii\framework>d:/xampp/php/php.exe yiic webapp ../../ys2 Create a Web application under 'D:\AppServ\www\ys2'? (yes|no) [no]:yes 1.创建控制器:在protected 下面的controller中创建名为IndexController.php的文件: <?php class IndexController e

使用Yii框架完整搭建网站流程入门

下载地址: http://www.yiiframework.com/ http://www.yiichina.com/ 由美籍华人薛强研究而出, Yii 这个名字(读作易(Yee))代表 简单(easy), 高效(efficient)和可扩展(extensible). 基于MVC,纯OOP,强大 基本配置要求:数据库:mysql,php5.0.1以上:pdo,[图片等需开启gd库模块] 下载完成,解压后,通过127.0.0.1或localhost访问其文件夹,可以查看requirements文件

Yii 基础

骨架搭建 1.下载2.windows 创建PHP环境变量,找到php.exe的目录D:\wamp\bin\php\php5.3.5,右键我的电脑,属性\高级设置,path最后添加;D: \wamp\bin\php\php5.3.53.进入命令行执行如下代码    D:    cd wamp    cd www    cd yii    cd framework    php yiic.php webapp ../cms 默认控制器,模板 $this->render('index')  //会载入

Yii多条数据展示挂件之CGridView

Yii多条数据展示挂件CGridView的简单使用 第一种: 在User的控制器中 public function actionIndex() { $criteria = new CDbCriteria(); //关联关系 $criteria -> with = array('city','user_info'); //创建查询数据的对象 $dataProvider = new CActiveDataProvider('User',array( 'criteria' => $criteria,

Yii2中自带分页类实现分页

转 http://www.cnblogs.com/gyrgyr/p/5249392.html 1.首先写控制器层 先引用pagination类 use yii\data\Pagination; 写自己的方法: function actionFenye(){        $data = Field::find();  //Field为model层,在控制器刚开始use了field这个model,这儿可以直接写Field,开头大小写都可以,为了规范,我写的是大写        $pages = n

财付通接口示例

前阵子做了几个第三方支付接口,写下来跟大家分享下,我用的是yii1框架做的. 1:from表单,提交商户给银行的数据,通过$this->createUrl('Payment/tenpay')?>" 跳转 <!-- 财付通支付页面 --> <form name=tenpayment action="<?php echo $this->createUrl('Payment/tenpay')?>" method=post target

Chinapay 银联支付接口

银联开发必须要开启mcrypt 和 bcmath 两个PHP扩展库的支持 如果没有就没有办法进行开发,先确认数据库是否开启扩展 关于银联支付接口 最主要的是银行提供的秘钥和私钥, netpayclient.php加密文件   MerPrK.key私钥   PgPubk.key秘钥 是银联也商户签约后提供 非常重要 1:from表单 提交商户数据个银行  https://payment.ChinaPay.com/pay/TransGet银联生产环境接口 在测试是用银联提供的测试环境比较好 通过re

Yii2 Day 6: 创建Widget

Yii1的项目中,积累了大量小部件,为了在Yii2中使用,需要做一些必要的修改. Assets管理 在Yii1的时候,Assets的管理是通过文件方式,通常的做法是在Wiget文件夹中建立一个assets的文件夹,把js,css, 图像,字体等放到这个文件夹下,然后通过下面的代码发布到web目录下: $assets = dirname(__FILE__) . '/assets'; $baseUrl = Yii::app()->assetManager->publish($assets); Yi