在使用vue-loader 配合webpack 对.vue文件进行加载的时候,如果开启了代码压缩会出来下面
几种问题,做个记录。

  • 丢失td结束标记,导致页面的布局错乱
  • input的属性type为text 时会被删了
  • <input ... checked="{check('id')}" />这个表达式会被压成 <input ... checked />

丢失td结束标记

<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</table>

最终压成:

<table>
<tr>
<td>1
<td>2
<td>3
<td>4
</tr>
</table>
这样就会造成页面的布局混乱

解决方法:

//webpack.config.js配置
//设置vue-html-loader中的参数removeOptionalTags=false
module:{
....
},
vue: {
loaders: {
html: 'vue-html-loader?removeOptionalTags=false',
}
}
//hell

type=”text”会被删了

压缩前
<input type="text" />
压缩后
<input />
如果有.text这样的选择器,就会失效

解决方法:

//和上面类似加上removeRedundantAttributes=false
module:{
....
},
vue: {
loaders: {
html: 'vue-html-loader?removeRedundantAttributes=false',
}
}

checked=”xxxx”被压缩为checked

压缩前
<input type="checkbox" checked="{checkRole('id')}" />
压缩后
<input type="checkbox" checked/>
这会导致所绑定的判断方法直接被删除了,所有的checkbox都被选中

解决方法可以有两个:
1.跟上面一样:设置参数让vue-html-loader不要去截断这个

html: 'vue-html-loader?collapseBooleanAttributes=false'

但是这个会带来另外的问题:如果你自自定义控件中也用了checked/multiple 这种默认的属性,
它会自动给他补全了。如:

压缩前
<slef-component multiple />
你在slefComponent里面定义的prop.multiple 是一个bool类型
压缩后
<slef-component multiple="multiple"/>
这里直接导致了程序的出错

2.第二种方法可以避免这种情况
不修改vue-html-loader的collapseBooleanAttributes

该用v-bind来绑定控件(自定义控件,原生控件)的属性
<input type="checkbox" v-bind:checked="checkRole('id')" />
<slef-component multiple />

Vue-loader 开启压缩后的一些坑的更多相关文章

  1. vue使用webpack压缩后体积过大要怎么优化

    vue使用webPack压缩后存储过大,怎么优化 在生产环境去除developtool选项 在webpack.config.js中设置的developtool选项,仅适用于开发环境,这样会造成打包成的 ...

  2. Vue Loader

    介绍 允许为 Vue 组件的每个部分使用其它的 webpack loader,例如在 <style> 的部分使用 Sass 和在 <template> 的部分使用 Pug(模板 ...

  3. vue 快速入门 系列 —— vue loader 下

    其他章节请看: vue 快速入门 系列 vue loader 下 CSS Modules CSS Modules 是一个流行的,用于模块化和组合 CSS 的系统.vue-loader 提供了与 CSS ...

  4. 我的Android进阶之旅------>解决Jackson等第三方转换Json的开发包在开启混淆后转换的实体类数据都是null的bug

    1.错误描述 今天测试人员提了一个bug,说使用我们的app出现了闪退的bug,后来通过debug断点调试,发现我们的app转换服务器发送过来的json数据后,都是为null.而之前已经提测快一个月的 ...

  5. vue 快速入门 系列 —— vue loader 扩展

    其他章节请看: vue 快速入门 系列 vue loader 扩展 在vue loader一文中,我们学会了从零搭建一个简单的,用于单文件组件开发的脚手架.本篇将在此基础上继续引入一些常用的库:vue ...

  6. Apache开启压缩功能

    起源 在一般的web服务器中,都会开启压缩功能,也就是deflate或者是gzip的压缩. 开启压缩功能主要的目的是为了减少传输的带宽,从而当服务器响应给客户端的时候,会大大减少传输的数据,代价就是在 ...

  7. html + js 实现图片上传,压缩,预览及图片压缩后得到Blob对象继续上传问题

    先上效果 上传图片后(设置了最多上传3张图片,三张后上传按钮消失) 点击图片放大,可以使用删除和旋转按钮 (旋转功能主要是因为ios手机拍照后上传会有写图片被自动旋转,通过旋转功能可以调正) html ...

  8. jmap dump文件压缩后失效

    最近线上出问题,于是用jmap -dump拿到dump文件,再linux压缩后拿到windows下无效,后来又直接拿了一个没有压缩的竟然可以用...坑啊!~

  9. Vue路由开启keep-alive时的注意点

    Vue路由开启keep-alive时的注意点   这个不是业务的要求,但是看到每次进入页面就重新渲染DOM然后再获取数据更新DOM,觉得作为一个前端工程师有必要优化下的加载逻辑,正好vue提供了 ke ...

随机推荐

  1. nc分析代理服务器

    最近洒家搞了一个代理服务器(参见 折腾阿里云笔记 ).以前ƒq的时候代理服务器都是开在127.0.0.1,浏览器到代理服务器之间不会有中间人监听问题.现在代理服务器不在本机,洒家就突然想到了这些问题: ...

  2. Machine Learning Algorithms Study Notes(4)—无监督学习(unsupervised learning)

    1    Unsupervised Learning 1.1    k-means clustering algorithm 1.1.1    算法思想 1.1.2    k-means的不足之处 1 ...

  3. 使用ZeroNet搭建P2P全球网站

    软件 ZeroNet是一个利用比特币加密和BT技术提供不受审查的网络与通信的BT平台,ZeroNet网络功能已经得到完整的种子的支持和加密连接,保证用户通信和文件共享的安全.使用ZeroNet,你可以 ...

  4. JavaSE复习总结之集合(Collection)

    Java早期版本只给集合类库提供了很少的一组类,但是随着Java版本的升级,Java集合类库越来越充实.集合类库里面存放的,是各式各样的数据容器,我们基本都学过数据结构这门课,数据结构所讲的就是ADT ...

  5. USACO(含training section)水题合集[5/未完待续]

    (1) USACO2.1 Ordered Fractions 枚举 排序即可,注意1/1 #include<iostream> #include<cstdio> #includ ...

  6. VIJOS P1037搭建双塔[DP]

    描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念“9?11”事件,Mr. F决定自己用水晶来搭建一座双塔. Mr. F有N块水晶,每块 ...

  7. Hibernate批量处理数据、HQL连接查询

    一.批量处理操作 批量处理数据是指在一个事务场景中处理大量数据.在应用程序中难以避免进行批量操作,Hibernate提供了以下方式进行批量处理数据: (1)使用HQL进行批量操作     数据库层面 ...

  8. SQL各种语句、函数

    1.更改数据库的名称 2.表中有数据的情况下再添加列.删除列 3.在SQLServer 中各种查询语句的使用示例 4.模糊查询的语句 5.排序语句.排序并查前三名的语句 聚合函数:sum,avg,ma ...

  9. XSS安全性过滤

    XSS攻击很多发生在用户在可以输入的地方输入了不友好的内容,根本处理方法是在输入内容中进行过滤 PHP或者java,基本都有现成的jar包或者php框架,调用自动过滤用户的输入内容,避免了XSS 防御 ...

  10. Maven学习(七)仓库

    * Maven仓库 在项目开发中,  项目目录下往往会有一个lib目录,用来存放第三方依赖jar文件, 如spring log4j jar等文件, Maven仓库就是放置JAR文件(WAR,ZIP,P ...