Yii2 加载css、js 载静态资源

代码紫霄使
• 阅读 7592

应用场景

Yii2提供了AppAsset类管理静态资源,在使用Yii2 布局模板时,如果想在某个页面内部写一段js 并且在页面底部,如果直接使用 script 标签是不可以的。

使用AppAsset类管理静态资源

打开assetsAppAsset.php,定义 addJs(),addCss() 分别用于在静态页面引入外部js、css 文件

1、修改AppAsset.php文件代码

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"
            ]
        );  
    }  
}

2、在静态页面调用AppAsset.php

<?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");
?>

在网站页面底部加载javascript代码

网页内部的js文件或代码,根据页面加载顺序,避免执行js时间过程导致页面空白,导致用户体验不好问题。一般放置在网页底部</body>的后面。

方案一

<?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); ?> 

解决Yii2在页面底部加载JS,语法提示失效

加入script 标签即可,注意只有 方案二有效,知道有其他方法的 ,望告知,谢谢!

<script type="text/javascript">
<?php $this->beginBlock('js') ?>  

    //js代码
    
<?php $this->endBlock() ?>  
<?php $this->registerJs($this->blocks['js'], \yii\web\View::POS_END); ?> 
</script>
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java动态加载类和静态加载类
一.什么是动态加载类什么是静态加载类Class.forName不仅表示类的类类型,还代表了动态加载类。编译时加载是静态加载类,运行时加载是动态加载类。请大家区分编译运行。二.为何要使用动态加载类我们写了一个程序并没有写A类和B类以及start方法 publicclassMain{publicstati
Easter79 Easter79
3年前
springboot2.0结合freemarker生成静态化页面
\TOC\使用freemarker将页面生成html文件,本节测试html文件生成的方法:1、使用模板文件静态化定义模板文件,使用freemarker静态化程序生成html文件。2、使用模板字符串静态化定义模板字符串,使用freemarker静态化程序生成html文件。1\.pom.xml
xiguaapp xiguaapp
4年前
jvm
类的加载连接与初始化加载:查找并加载类的二进制数据连接验证:确保被加载的类的正确性准备:为类的静态变量分配内存,并将其初始化为默认值解析:把类中的符号引用转换成为直接引用初始化:为类的静态变量赋予正确的初始值主动使用创建类的实例访问某个类或接口的静态变量,或者对该静态变量赋值调用类的
Stella981 Stella981
3年前
Spring Boot教程(二十)开发Web应用(1)
静态资源访问在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。默认配置SpringBoot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:/static/public/resources/METAINF/resources举例:
Wesley13 Wesley13
3年前
JSP页面、EL表达式
JSP页面:jsp是一种动态页面,html页面和jsp页面最大的区别是:html是一种静态页面,在html中只能定义css、js等,在jsp中除了可以定义css、js之外还可以定义java代码,还可以在jsp中使用el表达式和jstl标签,但是java代码必须使用<%java代码%第一
Wesley13 Wesley13
3年前
JS和CSS加载(渲染)机制不同
一、结论CSS可以在页面加载完成后随时渲染。举个例子:通过js给某个元素加一个id或者css,只要这个id或者css有对应的样式,此元素的样式就会自动生效。JS不可以在页面加载完成后生效。最明显的例子就是使用EasyUI的时候,iframe中哪些样式无效(EasyUi是依靠JS进行样式处理的,所以无法运行JS,那么样式也就无法设置。简单点说
Stella981 Stella981
3年前
Cocos Creator 资源加载流程剖析【三】——Load部分
Load流程是整个资源加载管线的最后一棒,由Loader这个pipe负责(loader.js)。通过Download流程拿到内容之后,需要对内容做一些“加载”处理。使得这些内容可以在游戏中使用。这里并不是所有的资源都需要进行一个加载处理,目前只有图片、Json、Plist、Uuid(Prefab、场景)等资源才会执行加载的流程,其他的资源在Downloa
Wesley13 Wesley13
3年前
Java中类的加载顺序剖析(常用于面试题)
如果类A和类B中有静态变量,静态语句块,非静态变量,非静态语句块,构造函数,静态方法,非静态方法,同时类A继承类B,请问当实例化A时,类内部的加载顺序是什么?Demo:ClassB:publicclassB{//静态变量staticinti1;//静态语句块static{
Stella981 Stella981
3年前
SpringBoot静态资源文件位置
SpringBoot可以JAR/WAR的形式启动运行,有时候静态资源的访问是必不可少的,比如:image、js、css等资源的访问。一、webjars配置静态路径实用性不大,简单了解即可。publicclassWebMvcAutoConfiguration{publicvoidaddReso
Stella981 Stella981
3年前
Spring Boot 静态资源处理
SpringBoot默认为我们提供了静态资源处理,使用WebMvcAutoConfiguration中的配置各种属性。建议大家使用SpringBoot的默认配置方式,如果需要特殊处理的再通过配置进行修改。如果想要自己完全控制WebMVC,就需要在@Configuration注解的配置类上增加@EnableWebMvc(@SpringBoot
Easter79 Easter79
3年前
SpringBoot静态资源文件位置
SpringBoot可以JAR/WAR的形式启动运行,有时候静态资源的访问是必不可少的,比如:image、js、css等资源的访问。一、webjars配置静态路径实用性不大,简单了解即可。publicclassWebMvcAutoConfiguration{publicvoidaddReso
代码紫霄使
代码紫霄使
Lv1
岁月,造就了厚重的历史,驱走了英雄的风流。
文章
4
粉丝
0
获赞
0