详解Vue-cli中的静态资源管理(src/assets和static/的区别)


Posted in Javascript onJune 19, 2018

你可能注意到了我们的静态资源共有两个目录src/assets和static/,你们它们之间有怎样的区别呢?

资源打包

为了回答这个问题,我们需要了解webpack是如何处理静态资源的。在所有的*.vue文件中你所有的templates 和CSS 都被vue-html-loader 和css-loader 查询资源的URLs解析. 比如说, 在 img src=”./logo.png” 和background: url(./logo.png) 中./logo.png是一个相对资源路径,并且会被Webpack视为一个模块依赖来解析。

因为./logo.png并非一个Javascript,当将它作为模块依赖对待时,我们需要用url-loader和file-loader去处理它。这种公式化处理早已经为你配置了loader,所以你基本上可以获得诸如文件名指纹和有条件的内嵌base64,因此你能够使用相对/模块路径而不必担心部署问题。

自从这些资源可以在build期间被内联/复制/重命名,它们本质上来讲是你资源代码的一部分。这就是为什么它们被推荐用于延源资源替换Webpack-processed的内部/src资源。事实上,你甚至不必将它们放进/src/assets:你可以基于模块/组件去组织它们并使用,你可以将每一个组件放进他们自己的文件夹,随着它的静态文件正确的紧挨着它。

资源决定规则

  1. 相对URLs, 例如 ./assets/logo.png 将会被解释为一个模块依赖. 它们将会被替换为基于你Webpack输出配置自动生成的 URL
  2. 无前缀URLs, 例如. assets/logo.png 将会被像相对URLs一样处理并将被转化为 ./assets/logo.png.
  3. 带~前缀的URLs 将会被看做模块请求, 类似于请求(‘some-module/image.png'). 如果你想改变Webpack的模块解决配置你需要使用这个前缀 。例如,你需要处理资源的别名,你需要使用 ~assets/logo.png去确保这个别名时受到重视的.
  4. 特权相对URLs, 例如 /assets/logo.png 是完全不作处理的.

在Javascript中获取资源路径

为了使Webpack可以正确返回资源路径, 你需要使用 require(‘./relative/path/to/file.jpg'), 它将会被file-loader处理 and returns并返回处理过的URL. 例如:

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

注意上例将会包含每个在最后一次build中的./bgs/ 下的图片。 这是由于 Webpack 无法推测它们哪个会在运行时被使用, 因此会包含所有图片.

“真正”的静态资源

对比而言, static/ 中的文件是完全不被Webpack处理的,它们被以相同的文件名直接被复制进最终目标as-is.你务必要使用绝对路径去引用它们.这是由config.js加入build.assetspublicpath和build.assetssubdirectory确定。

如下是一个含默认值得例子:

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

任何在 static/ 中的文件都需要被使用绝对路径 /static/[filename]来引用. 如果你改变assetSubDirectory 为assets, 那么这些 URLs将需要被替换为 /assets/[filename].

译自:http://vuejs-templates.github.io/webpack/static.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 动态加载 css 方法总结
Jul 11 Javascript
javascript hasFocus使用实例
Jun 29 Javascript
面向对象Javascript核心支持代码分享
May 23 Javascript
Jquery实现的tab效果可以指定默认显示第几页
Oct 16 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
javascript制作照片墙及制作过程中出现的问题
Apr 04 Javascript
JS+Canvas 实现下雨下雪效果
May 18 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
Oct 05 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
Jul 03 Javascript
JS库之Particles.js中文开发手册及参数详解
Sep 13 Javascript
微信小程序实现滚动Tab选项卡
Nov 16 Javascript
vue完美实现el-table列宽自适应
May 08 Vue.js
vue-cli2.x项目优化之引入本地静态库文件的方法
Jun 19 #Javascript
vue异步加载高德地图的实现
Jun 19 #Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
Jun 19 #Javascript
JS正则表达式常见用法实例详解
Jun 19 #Javascript
JavaScript使用math.js进行精确计算操作示例
Jun 19 #Javascript
使用proxy实现一个更优雅的vue【推荐】
Jun 19 #Javascript
微信小程序input框中加入小图标的实现方法
Jun 19 #Javascript
You might like
支持oicq头像的留言簿(二)
2006/10/09 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
2013/12/27 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
Python输出带颜色的字符串实例
2017/10/10 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
Python转换时间的图文方法
2019/07/01 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
python中关于数据类型的学习笔记
2020/07/19 Python
python实现简单的tcp 文件下载
2020/09/16 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
Ibatis如何使用动态表名
2015/07/12 面试题
c++工程师面试问题
2013/08/04 面试题
公务员年总结的自我评价
2013/10/25 职场文书
户籍证明的格式
2014/01/13 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
安全教育主题班会教案
2015/08/12 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS