Vue-loader 开启压缩后的一些坑

在使用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=falsemodule:{    ....},vue: {        loaders: {            html: ‘vue-html-loader?removeOptionalTags=false‘,        }    }//hell

type=”text”会被删了

压缩前<input type="text" />压缩后<input />

如果有.text这样的选择器,就会失效

解决方法:

//和上面类似加上removeRedundantAttributes=falsemodule:{    ....},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 />
时间: 2024-08-22 01:39:24

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

vue上传图片并压缩后以formData形式传给后台

vue上传图片 html <div id="file"> <input class="inputtt" type="file" @change="upfile($event)" accept="image/*" /> </div> js //上传图片 upfile(event) { var file = event.target.files[0] var name = e

vue 进行 gzip压缩和服务器如何开启gzip(转)

转自:https://blog.csdn.net/u013788943/article/details/79786558 使用vue-cli生成的项目,会自动配好相关的设置. 如下图找到对应的文件,productionGzip改为true,开启Gzip压缩 找到下图的文件,这里是Gzip的配置 代码如下: webpackConfig.plugins.push( new CompressionWebpackPlugin({ asset: '[path].gz[query]', algorithm:

Apache开启压缩功能

起源 在一般的web服务器中,都会开启压缩功能,也就是deflate或者是gzip的压缩. 开启压缩功能主要的目的是为了减少传输的带宽,从而当服务器响应给客户端的时候,会大大减少传输的数据,代价就是在服务器段需要消耗cpu时钟周期,因为压缩是在服务器端进行的,并且压缩还是比较损耗cpu的. 在进行压缩的时候,一般压缩的都是静态文件,例如图片,js,css文件. 例如下面几个淘宝首页的js的压缩情况(第一列是压缩前的数据,第二列是压缩后的数据),压缩的标准是在1KB以下的js文件不会进行压缩,大于

前端获取图片压缩后上传给后台

 此前有同事跟我聊过关于移动端用canvas压缩图片后再上传的功能,最近有了点空闲时间,所以就实践了一下.demo效果链接在文章底部贴出. 在做移动端图片上传的时候,用户传的都是手机本地图片,而本地图片一般都相对比较大,拿iphone6来说,平时拍很多图片都是一两M的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上传显然不是一个好办法. 目前来说,HTML5的各种新API都在移动端的webkit上得到了较好的 实现.根据查看caniuse,本demo里使用到的FileRe

网站启用GZip压缩后,速度快了3倍!

GZip压缩,是一种网站速度优化技术,也是一把SEO优化利器,许多网站都采用了这种技术,以达到提升网页打开速度.缩短网页打开时间的目的. 本文是一篇研究性文章,将通过某个案例来给大家显示网站采用GZip压缩前后的对比效果. 这里将要研究的对象是园子的博客http://www.yzznl.cn/,该博客已经采用了GZip压缩技术.你可以通过这里进行GZip压缩检测. 下面将要进行的实验是该网站在采用与不采用GZip压缩的情况下网页打开的速度和时间的比较. 选择的测试工具是webkaka网站测速工具

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

先上效果 上传图片后(设置了最多上传3张图片,三张后上传按钮消失) 点击图片放大,可以使用删除和旋转按钮 (旋转功能主要是因为ios手机拍照后上传会有写图片被自动旋转,通过旋转功能可以调正) html页面 需要引入weui.min.css 不然没法渲染样式, 将下面的代码放在需要上传文件的地方就行了,如果不需要图片旋转功能, 可以直接删掉那个div, 改不改js无影响 addPhoto.html <!--图片缩略图--> <div class="weui-cells weui-

移动端图片上传解决方案localResizeIMG先压缩后ajax无刷新上传

现在科技太发达,移动设备像素越来越高,随便一张照片2M+,但是要做移动端图片上传和pc上略有不同,移动端你不能去限制图片大小,让用户先处理图片再上传,这样不现实.所以理解的解决方案就是在上传先进行图片压缩,然后再把压缩后的图片上传到服务器. 一翻google之后,发现了localResizeIMG,它会对图片进行压缩成你指定宽度及质量度并转换成base64图片格式,那么我们就可以把这个base64通过ajax传到后台,再进行保存,先压缩后上传的目的就达到了. 处理过程 LocalResizeIM

上传图片图像进行压缩后上传

图片压缩: NSData *imageData = UIImageJPEGRepresentation(self.uploadImage , 0.55); NSString *file_name = [TimeUtil getDateStringWithFormat:@"yyyy-MM-dd"]; NSString *upload_name =[NSString stringWithFormat:@"%@.jpg",file_name ]; [request set

图片压缩后长度和宽度 及像素坐标

图片压缩后长度和宽度 及像素坐标 CGFloat    scaleFloat = 0.6;+ (UIImage *) scaleImage: (UIImage *)image scaleFactor:(float)scaleFloat{    CGSize size = CGSizeMake(image.size.width * scaleBy, image.size.height * scaleBy); UIGraphicsBeginImageContext(size);    CGConte