vue工程打包上线样式错乱问题 - bug解决(4种)

vue工程打包上线样式错乱问题 - bug总结(4种)

项目开发完成后,执行npm run build,进行打包,将打包完成的dist文件部署在服务器。配置好域名解析,就可以实现工程上线。

上线后,有时候我们会发现,它怎么和本地调试时长得不一样?

  • 长得不一样是样式问题?
  • 是打包的时候顺序先后问题?
  • 有一些样式没有生效,有一些样式被覆盖了?

这时候可以考虑以下几种方法。


Method1:main.js样式引入顺序问题

有时候我们发现组件内的样式没有生效,可能是被第三方组件样式覆盖了,router放在最后引入,就可以实现组件样式在第三方样式之后渲染。

解决办法:

  • router放在最后引入。(具体参考上述文章)

Method2:webpack 打包编译-webkit-box-orient: vertical 后消失

从下面的代码中我们不难看出:因为webpack编译会发生css去重的问题,在打包的过程时会过滤掉重复的css类或样式代码,虽然有时候不重复的也会被过滤掉(:/偷笑)但它确实发生了。

解决办法:

  • 找出/build/webpack.prod.conf.js文件的代码(如下),然后直接注释掉就可以了:
    
    		// Compress extracted CSS. We are using this plugin so that possible
    		// duplicated CSS from different components can be deduped.
    	
    	    new OptimizeCSSPlugin({
    	      cssProcessorOptions: config.build.productionSourceMap
    	        ? { safe: true, map: { inline: false } }
    	        : { safe: true }
    	    }),
    	    
    

在这里插入图片描述


Method3:添加使用范围样式<style scoped>

解决办法:

  • 找出/build/webpack.prod.conf.js文件的代码(如下),然后直接注释掉就可以了:
    
    	<style scoped>
    
    

    <style scoped>是H5的新特性,它限制样式只适用于当前组件,避免组件间的样式干扰。


Method4:打包编译之后,找到样式文件,修改对应代码

  • 还有一些是第三方组件的默认样式,在本地调试时没有显现出来,想要最直接地得到效果,就是在控制台里找到对应的类,
  • 再手动在组件里修改成自己想要的值。

    这种方式比较简单粗暴,只适合临时解决问题,不建议经常使用此种方法。


以上就是关于“ vue工程打包上线样式错乱问题 - bug总结(4种) ” 的全部内容。

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: "strict-origin-when-cross-origin" 是 Vue 打包时的一跨域设置,它在处理跨域请求时会遵循同源策略,但也会在某些特殊情况下进行一些适应性处理。 在同源策略下,网页的资源只能与同一源中的资源进行交互,不同源之间的交互会被浏览器阻止。而在跨域请求中,可以通过设置 "strict-origin-when-cross-origin" 来指定相关配置。 当 Vue 打包时启用 "strict-origin-when-cross-origin" 后,它会根据不同情况采取相应的跨域策略。具体来说,这设置会允许站点进行跨域请求,但仍然会遵循同源策略,并且在一些情况下会对请求头进行一些适应性处理。 举个例子,假设我们的 Vue 打包部署在站点 A 上,而我们的请求目标接口部署在站点 B 上。通常情况下,这会被视为跨域请求,而不被浏览器允许。但是,当使用 "strict-origin-when-cross-origin" 时,Vue 在发送请求时会将请求头设置为 "origin",以便减少跨域请求被浏览器拦截的可能性。 总结来说,"strict-origin-when-cross-origin" 是一 Vue 打包时设置的跨域策略,它在一定程度上放宽了跨域请求的限制,使得站点能够进行安全的跨域交互。但是需要注意的是,这并不代表完全放开了跨域请求,仍然会遵循同源策略,并适应性处理请求头以提高跨域请求的成功率。 ### 回答2: Vue打包时添加 strict-origin-when-cross-origin 是一安全策略,用于解决跨域请求的问题。 在网络通信中,浏览器有同源策略的限制,即只允许在同一域名下进行通信,而禁止跨域通信。例如,当一个页面通过 AJAX 请求加载其他域名下的资源时,浏览器会阻止这请求。 Vue打包构建时,可以通过配置来实现跨域请求。其中,添加 strict-origin-when-cross-origin 的设置是一常见的方式。 strict-origin-when-cross-origin 的含义是,对于非同源的跨域请求,浏览器在发送请求时会遵守同源策略,只将 Origin 设置为请求的来源域名,而不包括具体的路径信息。这样做的目的是为了防止在跨域情况下泄露用户隐私信息,因为路径信息可能包含用户的敏感数据。 比如一个 Vue 项目中,如果需要请求一个其他域名的 API 接口,而该域名支持跨域请求,那么在打包时可以配置 webpack 或者使用 Vue CLI 提供的代理配置功能,将请求代理到目标域名下。添加 strict-origin-when-cross-origin 的设置就是告诉浏览器在发送该跨域请求时,只包含 Origin 信息。 总而言之,通过在 Vue 打包时添加 strict-origin-when-cross-origin 的设置,可以确保在跨域请求时,仅将 Origin 设置为来源域名,以增加安全性和遵守同源策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值