vue-cli 中的静态资源处理
你会注意到在项目结构上我们有静态资源两个目录: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 中的静态资源处理的更多相关文章
- Vue Cli 打包之后静态资源路径不对的解决方法
cli2版本: 将 config/index.js 里的 assetsPublicPath 的值改为 './' . build: { ... assetsPublicPath: './', ... } ...
- Spring MVC程序中得到静态资源文件css,js,图片文件的路径问题总结
上一篇 | 下一篇 Spring MVC程序中得到静态资源文件css,js,图片 文件的路径 问题总结 作者:轻舞肥羊 日期:2012-11-26 http://www.blogjava.net/fi ...
- Spring Boot 中的静态资源到底要放在哪里?
当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥Spring Boot 中的静态资源加载问题:"松哥,我的HTML页面好像没有样式?& ...
- 在Salesforce中使用静态资源
静态资源 静态资源是Salesforce中默认的一种数据类型,用户可以上传各种文件,比如zip文件.jpg文件.css文件.图像文件等. 在Visualforce页面.Lightning框架的开发过程 ...
- SpringBoot使用thymeleaf的方式引用static中的静态资源
当我们在开发网站时为了快速完成,避免不了使用第三方的框架文件.这样我们就得引用框架中的各种资源文件.那么,在springboot中通过 thymeleaf如何在html中使用static文件夹下的静态 ...
- idea中springboot静态资源及页面跳转问题
1,静态资源放在resources/static下,html页面放在resources/templates下 2,在html中引入静态资源时,不用带static(对于路径来说是透明的) 3, 配置ht ...
- Spring Boot中的静态资源文件
Spring Boot中的静态资源文件 1.SSM中的配置 2.Spring Boot 中的配置 2.1 整体规划 2.2 源码解读 2.3 自定义配置 2.3.1 application.prope ...
- webpack中的静态资源处理
你可能已经注意到,在我们的项目结构里,有两个静态文件的路径,分别是:src/assets 和 static/.那这两个到底有什么区别呢? Webpacked 资源 为了回答这个问题,我们首先需要理解w ...
- Vue打包后访问静态资源路径问题
Vue介绍中static文件夹里放的是静态资源目录,如图片.字体等. 我们发现运行npm run start后本地图片路径是没问题的,但是打包上传后会怎么样呢? 我们知道,执行npm run buil ...
随机推荐
- hdu-1892-二维BIT
See you~ Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Su ...
- hdu-5492-dp
Find a path Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 桥接、nat、host-only
- 基于高通 qca4531 mp3 demo板 双系统引导设计
为了系统和稳定性,flash上有两套系统.在uboot引导阶段会根据当前的bootslot变量,决择运行哪套系统.进入系统之后,会自动挂载数据区,然后启动开关的应用程序. 如上图所示系统有两块存储芯片 ...
- net负载均衡服务器架构网址
https://blog.csdn.net/orichisonic/article/details/71122291 https://blog.csdn.net/huangxiangec/articl ...
- 软工作业No.4
2048小游戏—设计开发 软件需求规格说明书 甜美女孩 2018年10月 ——————————————————————————— 文档修改记录 日期 版本 说明 作者 2018-10-18 V1. ...
- L1-002 打印沙漏
所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印 ...
- html邮件链接和锚点链接
锚点链接: 锚点链接: 标记:<a name="XXX"></a> 取读:<a href="#XXX"></a> ...
- Redis 学习第一课:安装Linux Redis(Ubantu)
对于分布式缓存,之前公司项目中只使用了MemCached,使用比较方便,有现成的C#版本组件. 如今用Redis的公司有很多,所以打算了解一下Redis. Redis的官网地址:http://redi ...
- css实现垂直居中的几种方法
方法1.这个方法把一些 div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align 属性. #wrapper { //代表父元素 display: table; } #cell ...