vue-cli与webpack处理静态资源的方法及webpack打包的坑


Posted in Javascript onMay 15, 2018

通过Vue-cli进行webpack打包的坑

Vue-cli为Vue项目搭建的脚手架的确很方便,但打包时容易出现空白页,或者对应的静态资源加载不了。  

我是通过将项目/config下的index.js的assetsPublicPath变成'./',变成相对路径,进行解决。

cd vue demo 
 npm run dev //运行程序 
npm run bulid //webpack打包

处理静态资源

你也许会注意到vue-cli与webpack结合的项目中,我们通常会有两个静态资源的路径:src/assets和static/,他们两者的区别是什么呢?本文主要和大家介绍了vue-cli与webpack结合如何处理静态资源,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。

打包的资源

为了回答这个问题,我们首先要明白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处理。它们将被直接拷贝到目标文件夹,引用这些文件需要使用绝对路径。

总结

以上所述是小编给大家介绍的vue-cli与webpack处理静态资源的方法及webpack打包的坑,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript判断非数字的简单例子
Jul 18 Javascript
纯js实现遮罩层效果原理分析
May 27 Javascript
js中数组排序sort方法的原理分析
Nov 20 Javascript
node.js中的buffer.copy方法使用说明
Dec 14 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
Jun 01 Javascript
JavaScript中的编码和解码函数
Feb 15 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
Feb 22 Javascript
JavaScript之Date_动力节点Java学院整理
Jun 28 Javascript
详解Immutable及 React 中实践
Mar 01 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
小程序登录/注册页面设计的实现代码
May 24 Javascript
微信小程序select下拉框实现源码
Nov 08 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 #Javascript
vue中keep-alive的用法及问题描述
May 15 #Javascript
react中使用swiper的具体方法
May 15 #Javascript
vue addRoutes实现动态权限路由菜单的示例
May 15 #Javascript
浅谈AngularJS中$http服务的简单用法
May 15 #Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
May 15 #Javascript
解决linux下node.js全局模块找不到的问题
May 15 #Javascript
You might like
PHP $_FILES函数详解
2011/03/09 PHP
drupal 代码实现URL重写
2011/05/04 PHP
深入php数据采集的详解
2013/06/02 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
改进Django中的表单的简单方法
2015/07/17 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
Python 画出来六维图
2019/07/26 Python
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
介绍一下游标
2012/01/10 面试题
医药大学生求职简历的自我评价
2013/10/17 职场文书
开业庆典答谢词
2014/01/18 职场文书
暑期培训随笔感言
2014/03/10 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书