详解vue-cli与webpack结合如何处理静态资源


Posted in Javascript onSeptember 19, 2017

处理静态资源

你也许会注意到vue-cli与webpack结合的项目中,我们通常会有两个静态资源的路径:src/assets和static/,他们两者的区别是什么呢?

打包的资源

为了回答这个问题,我们首先要明白Webpack是如何处理静态资源的。在*.vue组件里,所有的templates和CSS模块都被vue-html-loader和css-loader解析来查找路径URL。

举个例子,在<img src"./logo.png">和背景background: url(./logo.png),”./logo.png”是一个相对路径,会被Webpack当做一个依赖加载。

但是因为logo.png并不是JavaScript,所以如果被当成一个依赖的花,我们需要通过url-loader和file-loader来解析它。这个模板已经为你配置了相应的loader,所以你通常不用担心相对路径的部署问题。

即使这些资源有可能在构建过程中被内联/拷贝/重命名,他们也是源码重要组成部分。这就是为什么我们建议单独在/src文件夹里放置静态资源,如同其他的资源文件夹。

事实上,你都不必把他们全放在/src/assets,你可以根据模块/组件来组织利用他们。比如说,你可以把任一组件放到他们自己的目录,并在该目录下存放静态资源。

资源引入规则

相对路径,比如 ./assets/logo.png会被解析成模块依赖。它们会被一个基于你Webpack输出配置的自动生成URL替代。

没有前缀的路径,比如assets/logo.png,同相对路径,转义成./assets/logo.png

有~前缀的路径。 ~被认为是一个模块请求,同require('some-module/image.png')。根路径,比如/assets/log.png

在JavaScript得到资源路径

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

这个资源路径同样会被file-loader处理然后返回处理后的路径。而且Webpack会一次性加载该bgs目录下的所有图片。

“真实的”静态资源

与此相对的,static/中的文件全都不会被Webpack处理。它们将被直接拷贝到目标文件夹,引用这些文件需要使用绝对路径。

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

Javascript 相关文章推荐
Javascript 异步加载详解(浏览器在javascript的加载方式)
May 20 Javascript
div模拟滚动条效果示例代码
Oct 16 Javascript
JavaScript中的标签语句用法分析
Feb 10 Javascript
JavaScript中函数(Function)的apply与call理解
Jul 08 Javascript
js中最容易被忽视的事件问题大总结
May 15 Javascript
微信小程序实战之轮播图(3)
Apr 17 Javascript
Bootstrap 中data-[*] 属性的整理
Mar 13 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
May 09 Javascript
解决Vue+Element ui开发中碰到的IE问题
Sep 03 Javascript
vue-cli3 配置开发与测试环境详解
May 17 Javascript
JS实现瀑布流效果
Mar 07 Javascript
vue实现滑动解锁功能
Mar 03 Vue.js
前端常见跨域解决方案(全)
Sep 19 #Javascript
详解.vue文件中监听input输入事件(oninput)
Sep 19 #Javascript
JavaScript数组去重的多种方法(四种)
Sep 19 #Javascript
一步步教你利用Canvas对图片进行处理
Sep 19 #Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
Sep 19 #Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 #Javascript
ECMAScript6变量的解构赋值实例详解
Sep 19 #Javascript
You might like
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
详解js类型判断
2018/05/22 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python 模块EasyGui详细介绍
2017/02/19 Python
Python模拟登陆实现代码
2017/06/14 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
django实现支付宝支付实例讲解
2019/10/17 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
python小白切忌乱用表达式
2020/05/29 Python
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
幼儿园教师个人反思
2014/01/30 职场文书
企业元宵节主持词
2014/03/25 职场文书
三严三实对照检查材料
2014/08/25 职场文书
抗洪救灾标语
2014/10/08 职场文书
社区母亲节活动总结
2015/02/10 职场文书
共青团员自我评价
2015/03/10 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
毕业赠语大全
2015/06/23 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python