之前写了一篇vue文件怎么使用的文章,有人问我怎么在css文件中使用public下的文件,这是个好问题,因为我之前都没有研究过

需要解决的2个问题

一开始按照vue文件的使用方式(https://www.cnblogs.com/wzcsqaws/p/11283228.html)试了一下,总结了下主要有2个问题,

  1. webpack解析不到你写的文件路径,控制台直接报错
  2. 如何把你的publicPath,放到css中

解决第1个问题 仅仅针对public目录图片如何在css使用,这一步可以不要,直接看解决第二个问题就能实现,当然也可以了解一下

webpack处理css大概是这样子



根据webpack图片上的注释,问题定位在css-loader上,是它把css解析CommonJS,读取url解析不到然后报错,那我们就看一下css-loader文档看看

有没有解决办法,



文档上有写,可以在配置里面添加一个url方法,简单判断在某个文件夹下,就可以不解析这个url了,不解析自然控制台就不报错了

解决第2个问题 url使用字符串拼接完整

为了兼容原生,原本打算使用css变量加calc实现,奈何无法实现,只能退一步使用sass,让文件在sass-loader的时候把图片完整url拼接完成

写了个简单的例子



这样就可以使用了,但是这么写很麻烦,每个文件都要加变量或者引入变量不利于管理,而且还要跟process.env.BASE_URL挂钩对吧

sass-loader有一个参数是默认加全局sass文件或者全局参数的,这正是我需要的



这里是在vuecli中使用简化的配置来导入全局变量的文件,这样就可以只写一遍,不过还不够,我还想要与process.env.BASE_URL挂钩



看了sass-loader配置,发现prependData可以以方法的方式使用,我们可以在这里判断是何种环境然后定义变量为不同的值,问题完美解决啦

问一问,有没有人能用原生解决问题的,求告知~

vue@cli3 public目录下的静态图片,如何使用在css类文件中(sass可行,纯css不行)的更多相关文章

  1. vue@cli3 项目模板怎么使用public目录下的静态文件,找了好久都不对,郁闷!

    作为图片最好放在static目录下,但是vue@cli3没有static,网上都说放在public目录下,行,那就放吧,可问题是图片放了怎么使用 第一次尝试 肯定用绝对路径这就不说了,用相对路径,we ...

  2. 使用jsp读取某个目录下的所有文件名,并保存在json文件中

    <%@page import="java.io.File"%> <%@page import="java.io.FileWriter"%> ...

  3. 关于WEB-INF目录下的静态资源(js、css、img)的访问

    首先,需要明确的是WEB-INF目录是被保护起来的,其下的jsp页面不能直接运行,只能通过控制器跳转来访问:而同样在此目录下的静态资源(js.css.img)也不能被WEB-INF目录外的其他文件直接 ...

  4. Laravel - 上手实现 - 文件上传、保存到 public 目录下

    1.为了访问方便,将上传的文件保存在 public 目录下,需要进行修改配置. 找到 config/filesystems.php 文件然后修改 root.具体如下: 'local' => [ ...

  5. Tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中

    Tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中 在Linux系统中,Tomcat 启动后默认将很多信息都写入到 catalina.out 文件中,我们可以通过tail  ...

  6. 【TP5.0】引入public/static目录下的静态资源

    1.假设tp5 下只有一个项目,且application在tp5下, 2.我们知道 外界访问tp5项目,只能通过public/index.php的入口文件,且查看apache服务器我们知道, [DOC ...

  7. SprignBoot是如何访问工程目录下的静态资源?

    ​ 目录 1.牛刀小试 1.1 图片静态资源的访问 1.2 为静态资源添加访问前缀 1.3  WelCome Page 的奇妙跳转 2.那么,SpringBoot是如何做到的呢? ​​​​​​​ 1. ...

  8. MVC项目中,如何访问Views目录下的静态文件!

    <!--注意,是system.webServer节点,而非system.web--><system.webServer> <handlers> <add na ...

  9. DOC下编译和运行带有包的java类文件

    前言: 带有包名的java类在DOC下编译可以成功,但是运行出错  错误: 找不到或无法加载主类 com.soanl.socket.MyServer D盘temp文件下有个Hello.java文件,包 ...

随机推荐

  1. PAT乙级:1076 Wifi密码 (15分)

    PAT乙级:1076 Wifi密码 (15分) 题干 下面是微博上流传的一张照片:"各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题 ...

  2. Django模板中变量的运算

    在django中的模板下我们知道变量使用{{xxx}}来呈现,可是当出现两个变量进行运算怎么处理那? #加法: {{value|add:value2}} #返回的结果是value+value2的值,假 ...

  3. 利用奇偶数来获取websocket推送时间间隔(或者比较前一个数和下一个数的变化)

    利用奇偶数来获取websocket推送时间间隔(或者比较前一个数和下一个数的变化) 在vue中的 data () {     return { countTime: 0,         newDat ...

  4. 基于MD5+RSA算法实现接口调用防扯皮级鉴权

    概述 最近项目中需要对第三方开发接口调用,考虑了一下,准备采用MD5+RSA算对请求数据进行签名,来达到请求鉴权,过滤非法请求的目标. 数字签名采用MD5+RSA算法实现.RSA私钥要严格保密并提供安 ...

  5. 蓝凌OA前台任意文件读取漏洞利用

    近期CNVD爆出漏洞编号:CNVD-2021-28277,首次公开日期为2021-04-15,蓝凌oa存在多个漏洞,攻击者可利用该漏洞获取服务器控制权.今天挑选一个蓝凌OA前台任意文件读取漏洞进行分析 ...

  6. zookeeper的集群搭建

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  7. kcptun安装

     

  8. SQL注入之MySQL报错注入整理

    看大佬们的文章看得我虎躯一震,精神抖擞,于是心血来潮,整理一下MySQL报错注入常见的手段和方法,再举几个例子 <代码审计:企业级Web代码安全架构>一书中介绍过报错注入十大方法,依次是: ...

  9. STM32—驱动HC-SR04超声波测距模块

    文章目录 超声波测距原理 HC-SR04工作原理 STM32实现驱动 1.引脚的配置 2.时序控制 3.时间差测量 4.如何将距离测出来 超声波测距原理 利用HC-SR04超声波测距模块可以实现比较精 ...

  10. deepin设置jdk全局变量

    sudo vim /etc/bash.bashrc 在文件最后边添加 JAVA_HOME=jdk地址CLASSPATH=.:$JAVA_HOME/bin.tools.jarPATH=$JAVA_HOM ...