vue项目使用static目录存放图片解决方案
我个人喜欢把所有引用文件全部放在打包文件src的同级文件static文件内部,方便整合。
提醒:vue项目中正常情况下图片是由
url-loader
处理,加入了hash值,如果放到static里面webpack打包后只会把资源复制到发布目录而不会把小图片优化为base64。
如果我们使用static目录存放图片会以为打包而产生一系列路径问题
总结来说有以下两种
使用绝对路径
===》 开发环境正常,但是到了生产环境因为就会全部找不到路径。
原因:使用绝对路径打包好依然是绝对路径,但是生产环境没有设置根目录所有无法使用。
解决方法:在服务器上设置SCP,即可使用绝对路径。
- <template>
- <div>
- <h1>HTML直接使用</h1>
- <img src="/static/images/b1.jpg" alt="">
- <h1>JS使用</h1>
- <img :src="imgUrl" alt="">
- <h1>css中使用</h1>
- <div class="bg"></div>
- </div>
- </template>
- <script>
- export default {
- data () {
- return {
- imgUrl: '/static/images/b2.jpg'
- }
- }
- }
- </script>
- <style scoped>
- .bg{
- width: 750px;
- height: 600px;
- background:url('/static/images/b3.jpg');
- }
- </style>
使用相对路径
===》开发环境也正常,但是到了生产环境只有HTML里面的图片资源正常。JS和CSS中都找不到路径
原因:HTML里面的图片路径会经过vue转换路径所有正常显示,js因为没有处理而找不到路径。所以我们直接帮它处理即可
解决方法:
HTML中使用相对路径让vue正常打包转换路径;
JS中使用直接设置路径为打包后应该显示的路径
./static/images/b2.jpg
即可正常显示CSS中使用因为打包后代码都是在 css-- * .css文件中,所以我们使用
../../static/images/b3.jpg
。同时还需要修改两个地方的设置
【build/utils.js文件】
- if (options.extract) {
- return ExtractTextPlugin.extract({
- use: loaders,
- fallback: 'vue-style-loader',
- publicPath: '../../' //新增这一句,作用是设置打包过程中提取CSS的方法
- })
- } else {
- return ['vue-style-loader'].concat(loaders)
- }
【config/index.js 文件】
- // 找到build
- build: {
- assetsSubDirectory: 'static',
- assetsPublicPath: '/',
- }
- // 修改为
- build: {
- assetsSubDirectory: './static',// 子目录---解决css相对路径的问题
- assetsPublicPath: './', //资源专用路径---解决JS路径问题
- }
【使用演示】
- <template>
- <div>
- <h1>HTML直接使用</h1>
- <img src="../../static/images/b1.jpg" alt="">
- <h1>JS使用</h1>
- <img :src="imgUrl" alt="">
- <h1>css中使用</h1>
- <div class="bg"></div>
- </div>
- </template>
- <script>
- export default {
- data () {
- return {
- imgUrl: './static/images/b2.jpg'
- }
- }
- }
- </script>
- <style scoped>
- .bg{
- width: 750px;
- height: 600px;
- background:url('../../static/images/b3.jpg');
- }
- </style>
以上就是我整理的使用static目录存放图片的解决方案,如果你有其他好的建议可以联系我哦!
vue项目使用static目录存放图片解决方案的更多相关文章
- Vue项目部署遇到的问题及解决方案
写在前面 Vue-Router 有两种模式,默认是 hash 模式,另外一种是 history 模式. hash:也就是地址栏里的 # 符号.比如 http://www.example/#/hello ...
- vue项目 webpack打包后,图片路径是绝对路径
vue项目,使用webpack打包,虽然在全局把路径改成了相对的路径,但是图片引用的路径还是异常的,解决办法如下: 1.config文件夹下index.js中: assetsPublicPath:&q ...
- vue项目开发基本目录结构
§ 目录结构 . ├── build/ # Webpack 配置目录 ├── dist/ # build 生成的生产环境下的项目 ├── src/ # 源码目录(开发都在这里进行) │ ├── ass ...
- vue项目中,单页图片过多,使用懒加载
最近做项目,一页图片很多,加载的时候效果很差. 通过学习借鉴其他大神的方法,使用了插件vue-lazyload,使用这个插件,界面更美观了,加载的效果好起来. 安装 npm i vue-lazyloa ...
- npm 创建vue项目(指定目录进行创建)
1.先安装node,js和npm 检验mpm 和node的方式是 npm -v / node -v 2.安装最新版本 npm install @vue/cli -g 意外安装老版本的是代码 npm ...
- 怎样理解 Vue 项目的目录结构?
Vue 项目的目录结构如下, 我们将会在后面逐个去了解它们的作用: 01. build - 存储项目构建相关的代码, 比如 webpack. 02. config - Vue 的配置目录,包括端口 ...
- vue项目搭建及创建、目录结构、项目启动、全局配置
Vue项目环境搭建 """ node ~~ python:node是用c++编写用来运行js代码的 npm(cnpm) ~~ pip:npm是一个终端应用商城,可以换国内 ...
- element-ui和npm、webpack、vue-cli搭建Vue项目
一.element-ui的简单使用 1.安装 1. npm 安装 推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用. npm i element-ui -S 2. CDN ...
- vue-cli搭建vue项目(单页面应用)
1.全局安装vue-cli 2.创建项目: vue init webpack test test是项目名称,会在当前工作目录下新建一个test文件夹 接下来会手动选择一些配置 除了Setup unit ...
随机推荐
- 一句powershell调用mimikatz抓密码
mimikatz神器大家都知道吧,可以抓取系统内的明文密码,但是平时我们测试的时候需要把mimikatz的几个文件上传到目标系统上面,然后再手工执行几个命令才能搞定,今天无意访问一个大神的博客,发现其 ...
- ngCordova插件说明
转载自 http://my.oschina.net/u/1416844/blog/495026 参 考http://blog.csdn.net/superjunjin/article/details/ ...
- weiphp插件开发注意
插件命名要规范,插件名文件名,控制器名,模型名要以大写开头.不然的话会有惊喜!╮(╯▽╰)╭
- [App Store Connect帮助]三、管理 App 和版本(6.3)转让 App:接受 App 转让
您必须在转让发起的 60 天内接受转让. 必要职能:“帐户持有人”职能.请参见职能权限. 以具有“帐户持有人”职能用户的身份登录至 App Store Connect. 系统会显示一条通知,指示 Ap ...
- ACM_递推题目系列之一涂色问题(递推dp)
递推题目系列之一涂色问题 Time Limit: 2000/1000ms (Java/Others) Problem Description: 有排成一行的n个方格,用红(Red).粉(Pink).绿 ...
- java性能优化读书笔记(1)
1.采用clone()方式创建对象 java语言里面的所有类都默认继承自java.lang.Object,此类里有一个clone()方法: 拷贝对象返回的是一个新的对象,而不是一个对象的引用地址: 拷 ...
- nginx connect failed (110- Connection timed out) 问题排查
首先排查 ping 下 nginx 与代理服务是否ping 的通,带端口的,telnet 下端口号是否是通的,本次遇到问题为 telnet 发现有台服务器不通,原因是端口未开放
- [Windows Server 2012] SQL Server 备份和还原方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:SQL S ...
- Java 基础入门随笔(3) JavaSE版——逻辑运算符、位运算符
上一节写了一些运算符的注意事项,这节开头依然是对运算符的一些注意点的阐述! 比较运算符除了>.>=.<.<=.==.!=之外需要注意instanceof:检查是否是类的对象,例 ...
- 预测学习、深度生成式模型、DcGAN、应用案例、相关paper
我对GAN"生成对抗网络"(Generative Adversarial Networks)的看法: 前几天在公开课听了新加坡国立大学[机器学习与视觉实验室]负责人冯佳时博士在[硬 ...