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中,为什么要尽可能使用局部变量?
Apr 06 Javascript
使用百度地图api实现根据地址查询经纬度
Dec 11 Javascript
jQuery基础语法实例入门
Dec 23 Javascript
编写高性能Javascript代码的N条建议
Oct 12 Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 Javascript
jQuery源码分析之sizzle选择器详解
Feb 13 Javascript
node.js利用redis数据库缓存数据的方法
Mar 01 Javascript
详解Angular2 之 结构型指令
Jun 21 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 Javascript
vue实现简单全选和反选功能
Sep 15 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
yii2中添加验证码的实现方法
2016/01/09 PHP
php批量修改表结构实例
2017/05/24 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
JS的replace方法介绍
2012/10/20 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
Python下singleton模式的实现方法
2014/07/16 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
python数据类型强制转换实例详解
2020/06/22 Python
python如何写个俄罗斯方块
2020/11/06 Python
pymysql模块使用简介与示例
2020/11/17 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
德国家具折扣店:POCO
2020/02/28 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
喜之郎果冻广告词
2014/03/20 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫