日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

yii2-按需加载并管理CSS样式/JS脚本

發布時間:2025/5/22 javascript 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 yii2-按需加载并管理CSS样式/JS脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(注:以下為Yii2.0高級;注意代碼中php標簽自己補上)

一、資源包定義

Yii2對于CSS/JS 管理,使用AssetBundle資源包類。
創建如下:
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' => 'backend\assets\AppAsset']); } //定義按需加載css方法,注意加載順序在最后 public static function addCss($view, $cssfile) { $view->registerCssFile($cssfile, [AppAsset::className(), 'depends' => 'backend\assets\AppAsset']); } }

二、視圖使用:

1. 視圖(或布局)使用全局CSS/JS

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,該如何做?

2. 在頁面中單獨寫樣式

$cssString = ".gray-bg{color:red;}"; $this->registerCss($cssString);

3. 在頁面中單獨寫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->registerJs('$("document").ready(function(){ $("#login-form").validate({errorElement : "small", errorClass : "error",rules: {"AgNav[nav_cn]": {required: true,},},messages:{"AgNav[nav_cn]" : { required : "此字段不能為空.",},}});});' ); ?>

4.視圖中引入CSS/JS文件

然后再說下在視圖中如何引入一個CSS/JS文件(不是定義在全局里的CSS或JS)
分別有兩種方法:

  • 方法1
    在資源包管理器里面定義一個方法,然后在視圖中注冊即可(推薦使用這種)

如上面代碼己定義:

//定義按需加載JS方法,注意加載順序在最后 public static function addScript($view, $jsfile) { $view->registerJsFile($jsfile, [AppAsset::className(), 'depends' => 'backend\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'=>['backend\assets\AppAsset']]); //$this->registerCssFile('@web/css/index-css.css');$this->registerJsFile('@web/js/jquery-ui.custom.min.js',['depends'=>['backend\assets\AppAsset']]); //$this->registerJsFile('@web/js/jquery-2.1.1.js'); //如下position是讓定義CSS/JS出現的位置 //$this->registerJsFile('@web/js/jquery-ui.custom.min.js',['depends'=>['backend\assets\AppAsset'],'position'=>$this::POS_HEAD]);

總結

以上是生活随笔為你收集整理的yii2-按需加载并管理CSS样式/JS脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。