你会注意到在项目结构上我们有静态资源两个目录:src/assets 和 static/。它们之间有什么区别?

1. 通过webpack处理的资源

要回答这个问题,我们首先需要了解webpack如何处理静态资源。在*.vue组件中,你所有的html模板和CSS都会被vue-html-loader 和 css-loader压缩并且查找资源路径。例如,<img src="./logo.png"> 和 background: url(./logo.png),"./logo.png"是一个相对路径的资源文件,会被webpack处理成一个模块依赖。

因为logo.png不是JavaScript,当要视为一个模块的依赖时,我们需要使用url-loader 和 file-loader来处理。这个模板已经给你配置了这些loader,所以你可以轻易得到如指纹文件和Base64内联的功能,同时能够使用相对路径,从而不必担心部署。

因为这些资源可能会在构建过程中被内联/复制/重命名,它们本质上还是你的一部分源代码。这就是为什么建议要将通过webpack处理的静态资源放置到/src目录、与其余的源代码放在相同的地方。实际上,你甚至都不必将它们放置到/src/assets文件夹中:你可以把他们放到具体的 模块/组件 目录中来使用。例如,你可以将每一个组件放到它们自己的目录中,靠着它们的静态资源。

2. 资源处理规则

  • 相对路径url, 例如 ./assets/logo.png 会注入到一个模块依赖中。他们会基于你webpack输出配置,自动替换生成的URL。
  • 无前缀的url, 例如 assets/logo.png 会被视为相同的相对路径url,被编译进./assets/logo.png。
  • 带有~前缀的url 会作为一个模块的请求, 类似于 require('some-module/image.png')。如果你希望当做一个模块来处理,你就需要使用这个前缀。例如你有一个assets的别名需要处理, 你需要使用<img src="~assets/logo.png">来确认别名被注意到。
  • 根目录相对路径, 例如 /assets/logo.png 直接不支持这种写法。

3. 获取JS文件资源路径

为了使webpack返回正确的资源路径,你需要使用require('./relative/path/to/file.jpg'),这样的话会通过file-loader处理并返回处理过的url路径。例如:

computed: {
background () {
return require('./bgs/' + this.id + '.jpg')
}
}

注意上面的例子会将./bgs/目录下的每个图片最后生成。这是因为webpack猜不到它们哪个会在运行时会被使用,所以它会生成所有的文件。

4. "真的"静态资源

相比之下,在static/并非由Webpack来处理:他们是以相同的文件名,直接复制到他们的最终目标目录。这些文件使用绝对路径,这个通过config.js文件中的 build.assetsPublicPath 和 build.assetsSubDirectory来控制。

如下面的例子,会有如下的默认值

// config.js
module.exports = {
// ...
build: {
assetsPublicPath: '/',
assetsSubDirectory: 'static'
}
}

任何放置在static/的文件都使用绝对的URL /static/[filename]来引用。如果你修改assetSubDirectory 参数成 assets,然后这些URL需要变成/assets/[filename]。

出处:https://loulanyijian.github.io/vue-cli-doc-Chinese/static.html

vue-cli 中的静态资源处理的更多相关文章

  1. Vue Cli 打包之后静态资源路径不对的解决方法

    cli2版本: 将 config/index.js 里的 assetsPublicPath 的值改为 './' . build: { ... assetsPublicPath: './', ... } ...

  2. Spring MVC程序中得到静态资源文件css,js,图片文件的路径问题总结

    上一篇 | 下一篇 Spring MVC程序中得到静态资源文件css,js,图片 文件的路径 问题总结 作者:轻舞肥羊 日期:2012-11-26 http://www.blogjava.net/fi ...

  3. Spring Boot 中的静态资源到底要放在哪里?

    当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥Spring Boot 中的静态资源加载问题:"松哥,我的HTML页面好像没有样式?& ...

  4. 在Salesforce中使用静态资源

    静态资源 静态资源是Salesforce中默认的一种数据类型,用户可以上传各种文件,比如zip文件.jpg文件.css文件.图像文件等. 在Visualforce页面.Lightning框架的开发过程 ...

  5. SpringBoot使用thymeleaf的方式引用static中的静态资源

    当我们在开发网站时为了快速完成,避免不了使用第三方的框架文件.这样我们就得引用框架中的各种资源文件.那么,在springboot中通过 thymeleaf如何在html中使用static文件夹下的静态 ...

  6. idea中springboot静态资源及页面跳转问题

    1,静态资源放在resources/static下,html页面放在resources/templates下 2,在html中引入静态资源时,不用带static(对于路径来说是透明的) 3, 配置ht ...

  7. Spring Boot中的静态资源文件

    Spring Boot中的静态资源文件 1.SSM中的配置 2.Spring Boot 中的配置 2.1 整体规划 2.2 源码解读 2.3 自定义配置 2.3.1 application.prope ...

  8. webpack中的静态资源处理

    你可能已经注意到,在我们的项目结构里,有两个静态文件的路径,分别是:src/assets 和 static/.那这两个到底有什么区别呢? Webpacked 资源 为了回答这个问题,我们首先需要理解w ...

  9. Vue打包后访问静态资源路径问题

    Vue介绍中static文件夹里放的是静态资源目录,如图片.字体等. 我们发现运行npm run start后本地图片路径是没问题的,但是打包上传后会怎么样呢? 我们知道,执行npm run buil ...

随机推荐

  1. vijos 1046 floyd求最小环

    // 转自vijos题解 最小环问题<1>朴素的算法:令e(u,v)表示u和v之间的连边,再令min(u,v)表示,删除u和v之间的连边之后,u和v之间的最短路最小环则是min(u,v) ...

  2. 073——VUE中vuex之使用actions和axios异步初始购物车数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. WEB-WELCOME-FILE-LIST

    当用户在浏览中输入的UTL不包含某个servlet 名或JSP页面的时候,welecome-file-list元素可以指定默认的文件. (即也就是输入:http://hostip:port/webAp ...

  4. pyinstaller又踩一坑, configparser os.mknod

    在使用pyinstaller时,有使用configparser模块. 使用相对路径.在pycharm中测试,正常,打包成exe,就出错了 换用绝对路径, print(os.getcwd()) fp_d ...

  5. Solrj调用Solr API

    在MyEclipse下的SSH项目,要调用Solr接口进行操作. 1.先运行solr 2.在已搭建好的SSH项目中用Solrj调用Solr的接口 3.导入如下solr的jar包到搭建好的SSH项目的W ...

  6. Triangles 正多边形分割锐角三角形

    题目描述 已知一个圆的圆周被N个点分成了N段等长圆弧,求任意取三个点,组成锐角三角形的个数. 输入 多组数据,每组数据一个N(N <= 1000000) 输出 对于每组数据,输出不同锐角三角形的 ...

  7. Alpha阶段项目复审

    队名 优点 缺点 名次 大马猴队 出现BUG修复时间短:针对初期用户需求的分析缺点能够快速更正,针对用户痛点实现了功能:开发的过程中削减了无用的功能,源代码管理比较好,更改能够及时提交,相关成员都有参 ...

  8. Runtime-iOS运行时应用

    本篇将会总结Rutime的具体应用实例,结合其动态特性,Runtime在开发中的应用大致分为以下几个方面(Runtime应用图): 相关文章:iOS运行时Runtime基础 一.动态方法交换:Meth ...

  9. python 复制/移动文件

    用python实现将某代码文件复制/移动到指定路径下. 场景例如:mv ./xxx/git/project1/test.sh ./xxx/tmp/tmp/1/test.sh (相对路径./xxx/tm ...

  10. DevExpress WPF入门指南:绑定编辑器对话框

    绑定编辑器对话框 每个Smart Tag属性既可以设置也可以绑定.如下图所示,点击绑定按钮打开绑定对话框: 如果属性已经绑定,binging按钮会显示为黄色,绑定的文本会显示在相应的属性行. 绑定So ...