当前位置: 首页 > news >正文

YII AssetManager分析 最小化脚本文件

为什么用YII assets

1.assets的作用是方便模块化,插件化的,一般来说出于安全原因不允许通过url访问protected下面的文件 ,但是我们又希望将module单独出来,所以需要使用发布,即将一个目录下的文件复制一份到assets下面方便通过url访问

Java代码   收藏代码
  1. $assets = Yii::getPathOfAlias('ext').'/css';  
  2. //$baseUrl = Yii::app()->getAssetManager()->publish($assets);  
  3. $baseUrl = Yii::app()->assetManager->publish($assets);  //extensions/css发布到assets的创建一个随机不冲突的文件夹下  
  4. Yii::app()->clientScript->registerCssFile($baseUrl.'/main.css');//引用assets下面的main.css  

2.如果一个模块需要添加使用资源,直接从webroot中引用添加即可。
但是试图创建一个模块能够在任何地方引用,且资源独立并能够避免命名冲突 。
你如何保证你的文件名不会与一些零散的应用程序的尝试使用相同名称的文件冲突,对于js,images,css也一样。
通过CAssetManager,Yii::app()->assetManager能够自动的将私有资源publish到公共目录下webroot/assets

 

下面以admin module为例

1、把需要用到的资源放在modules/admin/assets下。

2、然后通过 CAssetManager,Yii::app()->assetManager能够自动的将私有资源publish到公共目录下 网站目录/assets

3、Yii会自动在网站目录的/assets下创建一个随机不冲突的文件夹,如2b31b42b,并把你的modules/admin/assets目录下的文件拷贝过去。

通过如下代码获得,修改protected\modules\admin\AdminModule.php文件,

Java代码   收藏代码
  1. <?php  
  2. class AdminModule extends CWebModule  
  3. {  
  4.     private $_assetsUrl;  
  5.   
  6.     public function getAssetsUrl()  
  7.     {  
  8.         if($this->_assetsUrl===null)  
  9.             $this->_assetsUrl=Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.modules.admin.assets'));  
  10.         return $this->_assetsUrl;  
  11.     }  
  12.   
  13.     public function setAssetsUrl($value)  
  14.     {  
  15.         $this->_assetsUrl=$value;  
  16.     }  
  17. }  

然后,在/protected/modules/admin/views/layouts/main.php中

使用$this->module->assetsUrl就可以调用你的css等文件了。

Java代码   收藏代码
  1. <link rel="stylesheet" type="text/css" href="<?php echo $this->module->assetsUrl; ?>/css/screen.css"/>  

使用前强制更新asset

Java代码   收藏代码
  1. $baseJsUrl = Yii::app()->getAssetManager()->publish($baseJsPath, false, -1, YII_DEBUG);  

当使用

Java代码   收藏代码
  1. <?php Yii::app()->clientScript->registerCoreScript('jquery'); ?>  

 下不是jQuery,而多出了如下图

 因为CClientScript系统默认

Java代码   收藏代码
  1. public function getCoreScriptUrl()  
  2. {  
  3.     if($this->_baseUrl!==null)  
  4.         return $this->_baseUrl;  
  5.     else  
  6.         return $this->_baseUrl=Yii::app()->getAssetManager()->publish(YII_PATH.'/web/js/source');  
  7. }  

最小化方法

Java代码   收藏代码
  1. 'clientScript'=>array(  
  2.     'coreScriptUrl'=>'/js'// required to prevent asset publishing of core scripts  
  3.     'scriptMap'=>array(  
  4.     //'*.js'=>false,   
  5.        'jquery.js'=>false//特定的  
  6.     //'*.css'=>false,  
  7.     ),  
  8. ),  

 通过设置coreScriptUrl阻止系统默认的

相关文章:

  • 迅速搭建简易静态服务器
  • 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类
  • 4.56MariaDB密码重置4.57MariaDB慢查询日志
  • 第一次作业(2)
  • 基于遗传算法的优化问题求解
  • LSMTree - SStable 初体验
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • 242. Valid Anagram(C++)
  • 冒泡排序及回调函数的使用
  • HTML5基础(四)
  • 决战燕京城-10 前往天寿山
  • ubuntu设置源
  • 据Progress调查:2018年,70%的客户在使用NoSQL
  • PopupWindow
  • mysqldump的实现原理
  • 2017前端实习生面试总结
  • canvas 高仿 Apple Watch 表盘
  • CODING 缺陷管理功能正式开始公测
  • Git 使用集
  • JSDuck 与 AngularJS 融合技巧
  • Kibana配置logstash,报表一体化
  • Material Design
  • Octave 入门
  • php ci框架整合银盛支付
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 分布式任务队列Celery
  • 06-01 点餐小程序前台界面搭建
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • #{}和${}的区别?
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (12)目标检测_SSD基于pytorch搭建代码
  • (NSDate) 时间 (time )比较
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (强烈推荐)移动端音视频从零到上手(上)
  • (未解决)macOS matplotlib 中文是方框
  • (一)Thymeleaf用法——Thymeleaf简介
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET基础篇——反射的奥妙
  • ?
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [ABC294Ex] K-Coloring
  • [AIGC] 如何建立和优化你的工作流?
  • [Android] Implementation vs API dependency
  • [C++] Windows中字符串函数的种类
  • [Contest20180313]灵大会议
  • [ESP32] 编码旋钮驱动
  • [HackMyVM]靶场 VivifyTech
  • [Java性能剖析]Sun JDK基本性能剖析工具介绍
  • [jQuery]10 Things I Learned from the jQuery Source
  • [linux] shell中的()和{}