Yii2提供了AppAsset類管理靜態資源,在使用Yii2 佈局模板時,若是想在某個頁面內部寫一段js 而且在頁面底部,若是直接使用 script 標籤是不能夠的。javascript
打開assetsAppAsset.php,定義
addJs()
,addCss()
分別用於在靜態頁面引入外部js、css 文件php
一、修改AppAsset.php文件代碼css
namespace backend\assets; use yii\web\AssetBundle; /** * @author Qiang Xue <qiang.xue@gmail.com> * @since 2.0 */ class AppAsset extends AssetBundle { public $basePath = "@webroot"; public $baseUrl = "@web"; //默認自動加載樣式 public $css = [ "css/site.css", ]; //默認自動加載js public $js = [ ]; //依賴關係管理 public $depends = [ "yii\web\YiiAsset", "yii\bootstrap\BootstrapAsset", ]; //定義按需加載JS方法,注意加載順序在最後 public static function addJs($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" ] ); } }
二、在靜態頁面調用AppAsset.phpjava
<?php use backend\assets\AppAsset; AppAsset::register($this); AppAsset::addJs($this,Yii::$app->request->baseUrl."/js/a.js"); AppAsset::addCss($this,Yii::$app->request->baseUrl."/css/b.css"); ?>
網頁內部的js文件或代碼,根據頁面加載順序,避免執行js時間過程致使頁面空白,致使用戶體驗很差問題。通常放置在網頁底部</body>的後面。web
<?php $this->registerJs(" $(function () { //隨心所欲的寫你想要寫的js代碼吧 }); ", \yii\web\View::POS_END);
<?php $this->beginBlock('js') ?> //js代碼 <?php $this->endBlock() ?> <?php $this->registerJs($this->blocks['js'], \yii\web\View::POS_END); ?>
加入script 標籤便可,
注意只有 方案二有效
,知道有其餘方法的 ,望告知,謝謝!bootstrap
<script type="text/javascript"> <?php $this->beginBlock('js') ?> //js代碼 <?php $this->endBlock() ?> <?php $this->registerJs($this->blocks['js'], \yii\web\View::POS_END); ?> </script>