详解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 相关文章推荐
自定义jQuery选项卡插件实例
Mar 27 Javascript
javascript学习笔记(八)正则表达式
Oct 08 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
Feb 04 Javascript
JavaScript获取两个数组交集的方法
Jun 09 Javascript
tuzhu_req.js 实现仿百度图片首页效果
Aug 11 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
Jul 21 Javascript
详解javascript立即执行函数表达式IIFE
Feb 13 Javascript
微信小程序 MD5的方法详解及实例代码
Mar 10 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
Jul 17 Javascript
JS实现的简单折叠展开动画效果示例
Apr 28 Javascript
微信小程序实现左右列表联动
May 19 Javascript
vue3.0 项目搭建和使用流程
Mar 04 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
php的curl实现get和post的代码
2008/08/23 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
js异或加解密效果代码
2008/06/25 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
vue实现计算器功能
2020/02/22 Javascript
python创建和使用字典实例详解
2013/11/01 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
python3中str(字符串)的使用教程
2017/03/23 Python
python实现Floyd算法
2018/01/03 Python
Python之用户输入的实例
2018/06/22 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
小学运动会表扬稿
2014/01/19 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
事业单位考察材料范文
2014/12/25 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
文明医院的标语集锦!
2019/07/24 职场文书
OpenCV实现普通阈值
2021/11/17 Java/Android
灵能百分百第三季什么时候来?
2022/03/15 日漫