亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

yii2.0 靈活使用AssetBundle管理CSS樣式及JS腳本

瀏覽:114日期:2024-05-24 13:33:16

2.0的變化相信大家都看到了,其中對(duì)一個(gè)資源包概念做出了很完美的實(shí)現(xiàn),那就是AssetBundle,但是很多初學(xué)者朋友可能不太能夠正確的領(lǐng)會(huì)其中的含義

我畫(huà)了一張圖,大家可以將就看一下:

yii2.0 靈活使用AssetBundle管理CSS樣式及JS腳本

其中,控制器動(dòng)作的視圖(view)渲染順序是優(yōu)先于我們的模板頁(yè)(layout)的,那么一旦我們?cè)谀硞€(gè)視圖中使用了新的JS庫(kù),或新的CSS樣式文件,那么我們?nèi)绾稳ヌ幚砟兀?/p>

以下方式是錯(cuò)誤的,請(qǐng)避免使用:有的人會(huì)直接在視圖里添加對(duì)css或者js的link引用,這樣引入的文件是在視圖區(qū)域,而yii的默認(rèn)JS加載會(huì)放在模板頁(yè)的最后,這樣可能導(dǎo)致依賴(lài)關(guān)系混亂。比如你視圖中引用的js文件里調(diào)用了jquery包,但是執(zhí)行時(shí)jquery的加載代碼在HTML頁(yè)面的末尾,這樣導(dǎo)致頁(yè)面腳本錯(cuò)誤。

還有人會(huì)圖省事,直接把項(xiàng)目中所有的js或css文件都書(shū)寫(xiě)layout模板頁(yè)里,這樣產(chǎn)生大量的無(wú)效樣式或js,影響了加載效率及頁(yè)面錯(cuò)位風(fēng)險(xiǎn)。

所以正確的方式應(yīng)該是通過(guò)AssetBundle去解決這個(gè)問(wèn)題,先發(fā)一個(gè)簡(jiǎn)單的類(lèi)給大家看一下:

namespace appassets;use yiiwebAssetBundle;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’, ]; //依賴(lài)包 public $depends = [//這里寫(xiě)你的依賴(lài)包即可,沒(méi)有就別寫(xiě) ]; //導(dǎo)入當(dāng)前頁(yè)的功能js文件,注意加載順序,這個(gè)應(yīng)該最后調(diào)用 public static function addPageScript($view, $jsfile) {$view->registerJsFile($jsfile, [AppAsset::className(), ’depends’ => ’appassetsAppAsset’]); } //導(dǎo)入編輯器 public static function addCkeditor($view) {$view->registerJsFile(’/public/js/utility/ckeditor/ckeditor.js’, [AppAsset::className(), ’depends’ => ’appassetsAppAsset’]); } }可以看到上面我創(chuàng)建的類(lèi)中已經(jīng)預(yù)定義了兩個(gè)靜態(tài)方法addPageScript和addCkeditor,其中addCkeditor是一個(gè)第三方的js組件,是個(gè)編輯器,具體的開(kāi)發(fā)環(huán)境中你們可以寫(xiě)別的方法名及加載別的組件。那么上的這個(gè)東西寫(xiě)好后應(yīng)該如何去使用呢?我們?cè)谀0屙?yè)開(kāi)頭部分加上這句話://自動(dòng)加載資源AppAsset::register($this);這樣會(huì)在模板頁(yè)加載基礎(chǔ)的項(xiàng)目資源文件,比如css和js什么的?,F(xiàn)在我們有一個(gè)視圖叫create-mail,需要使用ckeditor編輯器,那么我們應(yīng)該在create-mail視圖的開(kāi)頭加上這句話://導(dǎo)入ckeditor包資源appassetsAppAsset::addCkeditor($this);最后解釋一下,addCkeditor()方法是我們預(yù)先定義好的,這樣我們可以把一些常見(jiàn)的包都拆包并預(yù)處理好,如果你覺(jué)得麻煩可以直接使用如下的方式://導(dǎo)入ckeditor包資源appassetsAppAsset::addPageScript($this,’js文件相對(duì)路徑或url’);以上的例子只是使用了js文件作為一個(gè)簡(jiǎn)單的介紹,css樣式的加載也是一樣的道理。這樣做的好處是,即使在視圖里加載css或js也會(huì)因?yàn)橐蕾?lài)關(guān)系而出現(xiàn)在視圖外面的常規(guī)加載區(qū)域中,規(guī)范了很多。同時(shí)也因?yàn)橐蕾?lài)關(guān)系,你在視圖里加載的文件肯定會(huì)排在你的基礎(chǔ)樣式或腳本的后面,不會(huì)出錯(cuò)。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 成人第一页 | 国产精品400部自产在线观看 | 一级黄色片视频 | 亚洲欧美综合色区小说 | 狂野猛交xxxx吃奶 | 日韩美女一级毛片 | 狠狠色丁香婷婷久久综合2021 | 亚洲国产精品一区二区第四页 | 中国一级特黄的片子免费 | 亚洲人成综合 | 亚洲综合一区二区精品久久 | 天堂tv亚洲tv日本tv不卡 | 精品国产区一区二区三区在线观看 | 国产成人在线网址 | 视频在线观看91 | 亚洲精品视频在线 | 国产丝袜啪啪 | 久草久操 | 国产免费看片 | 欧美一级高清片欧美国产欧美 | 亚洲麻豆精品果冻传媒 | 亚洲精品91香蕉综合区 | 在线va| 黄色在线视频观看 | 国产精品无码专区在线观看 | 国产精品久久1024 | 日韩欧美国产高清在线观看 | 黄色小视频在线免费观看 | 午夜大片免费完整在线看 | 日本人一级毛片免费完整视频 | 九九九精品在线观看 | 国产欧美一区二区三区鸳鸯浴 | 欧美片欧美日韩国产综合片 | 国产亚洲视频网站 | 一区二区三区四区视频在线观看 | 国内精品免费视频自在线 | 41sao.can在线观看国产 | 国产三级精品三级国产 | 一区二区三区在线 | 日本 | 精品一久久香蕉国产线看观看下 | 国产高清精品在线 |