开发语言都有编译和运行两个阶段,很多时候这个也会带来许多bug

如:一个项目在开发阶段测试没有问题,然上线发布后就会有这样那样的问题,譬如说图片的加载,静态数据(js,css,json)读取错误

一 、加载图片资源

接下来我们就使用vue的项目默认首页面的img来测试

1、使用data挂载url

我们把这个image的src改一下

改为挂载到data 如

保存刷新

图片报404

为啥会这丫呢?最开始的图片src是直接映射到图片的真实地址的,这个在编译期就会根据url把对应的资源打包进去;

而后面src使用data挂载,在编译时不会将资源打包进去,所运行期根据url寻找图片就会提示404了

2、使用静态目录加载img

解决方法就是直接将图片移入public目录(这个是CLI3的静态资源目录会默认打包进项目)

这样运行时就能找到图片了

二、加载json数据

1、使用axios 根据相对路径读取

同理使用axios加载本地json也会遇到同样问题

如在assets下面我们放一个json,然在组件读取



看这个运行时直接是404

2、使用copy-webpack-plugin 复制到指定目录

这个同上面图片一样可以移入到public目录下去,但还有一个方法可以解决,那就是copy-webpack-plugin这个在加入第三方libs特别有用

1)CLI2 拷贝资源方式

CLI2直接在webpack.prod.conf.jsplugins 下增加即可如


'use strict'
const CopyWebpackPlugin = require('copy-webpack-plugin') // other configure plugins: [
// other configure
// copy custom static assets
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
},
{ // add here
from: path.resolve(__dirname, '../src/assets/data/testgeojson.json'),
to: 'localData/data',
ignore: ['.*']
}
]) // other configure ]

1)CLI3 拷贝资源方式

而最新的CLI3要新增一个vue.config.js 同样添加copy-webpack-plugin


configureWebpack: {
plugins: [
new CopyWebpackPlugin(
[{
from: './src/assets/data/testgeojson.json',
to: 'localData/data',
ignore: ['.*']
}]
)]
}

同时修改组件中axios读取方法


loadJson(){
axios.get('localData/data/testgeojson.json').then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
}

再重启哈项目

OK了

其实新版的CLI要配置就得在vue.config.js中进行了,还有很多改动,目前我用到的配置如下

完整的 vue.config.js 配置


let path = require('path')
const CopyWebpackPlugin = require('copy-webpack-plugin') // 这里引入`这个CopyWebpackPlugin`插件
function resolve(dir) {
return path.join(__dirname, dir)
}
let isProduction = process.env.NODE_ENV === 'production'
module.exports = {
publicPath: `./`,
outputDir: `./cli3learn_dist`, // build 生产环境构建文件的目录
assetsDir: './statics',// 静态资源目录(很多时候打包后找不到css,这里指定后就可以解决这个问题)
indexPath: './index.html', // index.html路径
productionSourceMap: !isProduction,
chainWebpack: config => { // 别名指定
config.resolve.alias.set('@utils', resolve('src/utils/index.js'))
},
devServer: {
port:8089,
proxy: {
'/': {
target: 'https://www.benpaodehenji.com',
ws: false,
changeOrigin: true
}
}
},
// 使用这个插件 ,将src/assets/testgeojson.json拷贝到publi目录下
configureWebpack: {
plugins: [
new CopyWebpackPlugin(
[{
from: './src/assets/data/testgeojson.json',
to: 'localData/data',
ignore: ['.*']
}]
)]
}
}

ok 加载本地资源就这些了,纯属个人经验,有好方法的朋友不妨留言,不对的地方敬请指出

运行和编译时期资源加载的不同【vue】的更多相关文章

  1. Cocos Creator 资源加载流程剖析【一】——cc.loader与加载管线

    这系列文章会对Cocos Creator的资源加载和管理进行深入的剖析.主要包含以下内容: cc.loader与加载管线 Download部分 Load部分 额外流程(MD5 Pipe) 从编辑器到运 ...

  2. 细谈unity资源加载和卸载

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.概要 在了解unity的资源管理方式之后,接下来细谈一下Unity的资源是如何从磁盘中加载到运行时的内存中,以及又是如 ...

  3. 【Android开发学习笔记】【高级】【随笔】插件化——资源加载

    前言 上一节我们针对插件最基本的原理进行了一个简单的demo实现,但是由于插件的Context对象被宿主所接管,因此无法加载插件程序的资源.那么如何解决这个问题捏? 有人提出这样的方案:将apk中的资 ...

  4. Unity3D之Mecanim动画系统学习笔记(十):Mecanim动画的资源加载相关

    资源加载是必备的知识点,这里就说说Mecanim动画的资源如何打包及加载. 注意,Unity4.x和Unity5.x的AssetBundle打包策略不一样,本笔记是基于Unity4.x的AssetBu ...

  5. React Native:真机断点调试+跨域资源加载出错问题解决

    写在前面 闲来无事,折腾了一下React Native,相比之前,开发体验好了不少.但在真机断点调试那里遇到了跨域资源加载出错的问题,一番探索总算解决,目测是RN新版本调试服务的bug. 遇到类似问题 ...

  6. Cocos Creator 资源加载流程剖析【二】——Download部分

    Download流程的处理由Downloader这个pipe负责(downloader.js),Downloader提供了各种资源的"下载"方式--即如何获取文件内容,有从网络获取 ...

  7. 【死磕 Spring】----- IOC 之 Spring 统一资源加载策略

    原文出自:http://cmsblogs.com 在学 Java SE 的时候我们学习了一个标准类 java.net.URL,该类在 Java SE 中的定位为统一资源定位器(Uniform Reso ...

  8. React Native 断点调试 跨域资源加载出错问题的原因分析

    写在前面 ————如果从头开始看还没解决,试试文章最后的绝招 闲来无事,折腾了一下React Native,相比之前,开发体验好了不少.但在真机断点调试那里遇到了跨域资源加载出错的问题,一番探索总算解 ...

  9. AssetBundle使用心得【资源加载】

    0.资源加载方式 静态资源 Asset下所有资源称为静态资源 Resources资源 Resources目录下,通过实例化得到的资源 AssetBundle资源 又称为增量更新资源 1.什么是Asse ...

  10. libgdx学习记录16——资源加载器AssetManager

    AssetManager用于对游戏中的资源进行加载.当游戏中资源(图片.背景音乐等)较大时,加载时会需要较长时间,可能会阻塞渲染线程,使用AssetManager可以解决此类问题. 主要优点: 1. ...

随机推荐

  1. Python查找存储区0KB文件并记录下地址

    查找存储区域中0KB大小文件,可以根据需要变更指定大小. #-*- coding: utf-8 -*- #!/usr/bin/python from os.path import isdir,absp ...

  2. java数组排序及查找方法

    前言 在上一篇文章中,壹哥给大家讲解了数组的扩容.缩容及拷贝方式.接下来在今天的文章中,会给大家讲解更重要的数组排序及查找方法.今天的内容会有点难,希望你不要因此而退缩,挺过这一关,你会向上突破的! ...

  3. Java面试——RPC

    一.RPC 服务的原理 [1]Socket 套接字:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个链接的一端称为 Socket.可以实现不同计算机之间的通信,是网络编程接口的具体实现.So ...

  4. JVM——锁

    对象头[每个对象都具有对象头] Mark:对象头的标记(32位),描述对象的 hash.锁信息.垃圾回收标记.年龄:内容包括:①.指向锁记录的指针:②.指向 monitor 的指针:③.GC 标记:④ ...

  5. Wiki.js配置LDAP认证

    安装好wikijs 之后, 可以进行进一步的详细配置. 这里介绍 LDAP 认证的配置. 在 管理 -> 身份验证 -> 添加策略 -> 选择 LDAP/AD , 如下: 接下来进行 ...

  6. 关于Cookie要懂的知识

    ☞演示 什么是Cookie? http是一个无状态协议,它不对之前发生过的请求和响应的状态进行管理.这样就可能导致,我们登陆一个网站后,每次跳转新页面,之前的登陆状态都不能被记住,要重新登陆等问题. ...

  7. Mybatis的整体理解

    I有关于我的对ybatis的设想: 简单总结-下有关于我对wybat is的架构理解: 总体分为三个层面: 1.对外接口API 2.MapStatement数据处理 3.执行及其数据存储 两个主要的对 ...

  8. sqlite4操作

    目录 SQLite数据库(一):基本操作... 1 目录... 1 一.SQLite介绍... 2 1.    什么是SQLite. 2 2.    什么是数据库... 2 3.    数据库是如何存 ...

  9. [软件设计&系统建模] Web软件通用能力模块

    0 基础工具 1 日志 2 权限 3 文件处理(下载/上传) 4 对象池 对象池 数据库连接池 线程池 5 微服务 服务网关 配置中心 注册中心 服务调用 服务熔断 健康检测 Actuator 6 缓 ...

  10. 4.测试类mapper报错

    1.总结:前几天还有今天一直在弄测试类报错的原因,想着项目是一个大整体,写一个mappe测试类,测试一个mapper,这样后面不会出错: 但是在测试mapper的时候一直,出现mapper值为空的异常 ...