详解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 事件执行检测代码
Dec 09 Javascript
jquery监控数据是否变化(修正版)
Apr 12 Javascript
用Javascript获取页面元素的具体位置
Dec 09 Javascript
JS批量修改PS中图层名称的方法
Jan 26 Javascript
在AngularJS应用中实现一些动画效果的代码
Jun 18 Javascript
由ReactJS的Hello world说开来
Jul 02 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
Nov 17 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
Sep 14 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
Feb 08 Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 Javascript
手把手搭建安装基于windows的Vue.js运行环境
Jun 12 Javascript
vue学习笔记之v-if和v-show的区别
Sep 20 Javascript
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
对javascript和select部件的结合运用
2006/10/09 PHP
php垃圾代码优化操作代码
2010/08/05 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
python+mysql实现简单的web程序
2014/09/11 Python
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
Python中异常重试的解决方案详解
2017/05/05 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
Python如何用filter函数筛选数据
2020/03/05 Python
Python timeit模块原理及使用方法
2020/10/10 Python
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
初中同学聚会感言
2014/02/11 职场文书
入党积极分子评语
2014/05/04 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
政风行风评议整改方案
2014/09/15 职场文书