yii2如何引入自定义css或js文件
2015-08-17 15:02
579 查看
Yii2 在管理css和js脚本方面,引入了一个资源管理包的概念AssetBundle。 先直接写出我所知道的两种引入方式:现假如我要引入我根目录下的 public/assets/js/hello.js 文件 1)第一种是在视图文件中直接引入: 在视图文件开头先引入HTML帮助类<?php use yii\helpers\Html; ?>
然后在文件中引入js:
<?=Html::jsFile('@web/public/assets/js/hello.js')?>
如此即可
最后再说下yii2的资源管理类 AppAsset 类。使用它有什么好处呢?首先一个是它可以规范依赖关系,不会因为js先后的加载顺序不同而导致代码的不可用。比如说引入jquery,我们自定义的代码若是在jquery文件之前先引入了,就有可能出现错误。而使用AppAsset 可以让在视图里加载的文件肯定会排在你的基础样式或脚本的后面,不会出错。
下面说下如何引用:
namespace app\assets; use yii\web\AssetBundle; class AppAsset extends AssetBundle { public $basePath = '@webroot'; public $baseUrl = '@web'; public $css = [ 'public/skin/default_skin/css/theme.css', ]; public $js = [ 'public/vendor/jquery/jquery-1.11.1.min.js', 'public/vendor/jquery/jquery_ui/jquery-ui.min.js', 'public/js/bootstrap/bootstrap.min.js', ]; //依赖包 public $depends = [ //这里写你的依赖包即可,没有就别写 ]; //导入当前页的功能js文件,注意加载顺序,这个应该最后调用 public static function addPageScript($view, $jsfile) { $view->registerJsFile($jsfile, [AppAsset::className(), 'depends' => 'app\assets\AppAsset']); } }然后在我们的模板开头部分加上:
//自动加载资源 AppAsset::register($this);然后导入js:
//导入js资源 \app\assets\AppAsset::addPageScript($this,'js文件相对路径或url'); //@web/public/assets/js/hello.js
如此即可。再延伸一下,假如几个页面都共同引入了相同的几个js或css文件安,那么可以在AppAsset里导入当前js文件函数里,一次性加载多几个js文件:
//导入当前页的功能js文件,注意加载顺序,这个应该最后调用 public static function addPageScript($view) { $view->registerJsFile('@web/public/assets/js/hello.js', [AppAsset::className(), 'depends' => 'app\assets\AppAsset']);}
在视图中直接调用addPageScript($this)即可
//导入js资源 \app\assets\AppAsset::addPageScript($this);
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料