vue 懒加载 css样式不会覆盖_干货分享 | Vue框架常见问题浅谈

本文探讨了Vue项目开发中的常见问题,包括列表进入详情页的传参、本地开发环境的跨域问题、axios的封装管理、UI库的按需加载、如何覆盖UI库样式、定时器处理、rem文件导入、打包后.map文件过大、fastClick延迟解决、组件写选项顺序、路由懒加载、开启gzip压缩、详情页缓存及位置保持、CSS scoped与深度选择器、性能分析工具Hiper的使用以及路由拆分管理。提供了详细的解决方案和代码示例。
摘要由CSDN通过智能技术生成

60f02c3f707eb4fcebc0da87c0b59d63.png

b329d40711fa07333c6b57f232fc0b60.png

友情提示:全文7800多文字,预计阅读时间10分钟

d1cf50447be85c2b31951a8ad5b87df3.gif

Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。使用其进行前后端分离开发前端业务平台,不断摸索踩坑之后,总结出如下几点Vue项目开发中常见的问题及解决办法,希望与君共同探讨。

  • 列表进入详情页的传参问题

  • 本地开发环境请求服务器接口跨域的问题

  • axios封装和api接口的统一管理

  • UI库的按需加载

  • 如何优雅的只在当前页面中覆盖ui库中组件的样式

  • 定时器问题

  • rem文件的导入问题

  • Vue-Awesome-Swiper基本能解决你所有的轮播需求

  • 打包后生成很大的.map文件的问题

  • fastClick的300ms延迟解决方案

  • 组件中写选项的顺序

  • 路由懒加载(也叫延迟加载)

  • 开启gzip压缩代码

  • 详情页返回列表页缓存数据和浏览位置、其他页面进入列表页刷新数据的实践

  • css的scoped私有作用域和深度选择器

  • hiper打开速度测试

  • 路由的拆分管理

  • 可选链操作符

  • 利用闭包构造map缓存数据

d1cf50447be85c2b31951a8ad5b87df3.gif d1cf50447be85c2b31951a8ad5b87df3.gif

列表进入详情页的传参问题

d1cf50447be85c2b31951a8ad5b87df3.gif

例如租户列表页面前往租户详情页面,需要传一个租户id;

8c3d892261348ddfcb6996d1936ee5bb.png

页面的路径为http://localhost:8080/#/detail?code=1,可以看到传了一个参数code=1,并且就算刷新页面id也还会存在。此时在页面可以通过code来获取对应的详情数据,获取code的方式是this.$route.query.code

vue传参方式有:query、params+动态路由传参。

说下两者的区别:

1、query通过path切换路由,params通过name切换路由

c1e242febd935c3722a0e876c7385076.png

2、query通过this.$route.query来接收参数,params通过this.$route.params来接收参数。

75c952135ba1fab3e838700b3a83ee61.png

3、query传参的url展现方式:

/detail?code=1&user=123&identity=1&更多参数

params+动态路由的url方式:/detail/123

4、params动态路由传参,一定要在路由中定义参数,然后在路由跳转的时候必须要加上参数,否则就是空白页面:

7c49a7c858bc1dea0c53ce550de3bb47.png

注意,params传参时,如果没有在路由中定义参数,也是可以传过去的,同时也能接收到,但是一旦刷新页面,这个参数就不存在了。这对于需要依赖参数进行某些操作的行为是行不通的,因为你总不可能要求用户不能刷新页面吧。例如:

cfbf38092fe39352e6257ee1120aaf01.png d1cf50447be85c2b31951a8ad5b87df3.gif

本地开发环境请求服务器接口跨域的问题

d1cf50447be85c2b31951a8ad5b87df3.gif d57a809912b2510493b1c5d466e671d4.png

上面的这个报错大家都不会陌生,报错是说没有访问权限(跨域问题)。本地开发项目请求服务器接口的时候,因为客户端的同源策略,导致了跨域的问题。

下面先演示一个没有配置允许本地跨域的的情况:

a3069b1d8f25231fb9954aaf92db5393.png 27ebfec006f1e491c421ca7d2395b7d7.png

可以看到,此时我们点击获取数据,浏览器提示我们跨域了。所以我们访问不到数据。

那么接下来我们演示设置允许跨域后的数据获取情况:

de970702d332e4a571b745dc69a9595b.png

注意:配置好后一定要关闭原来的server,重新npm run dev启动项目。不然无效。

c31fa2f21cf8ec1d42891a21824675aa.png 072a47c0311a300a429f28ac5b2610c0.png

我们在1处设置了允许本地跨域,在2处,要注意我们访问接口时,写的是/api,此处的/api指代的就是我们要请求的接口域名。如果我们不想每次接口都带上/api,可以更改axios的默认配置axios.defaults.baseURL = '/api';

这样,我们请求接口就可以直接this.$axios.get('app.php?m=App&c=Index&a=index'),很简单有木有。此时如果你在network中查看xhr请求,你会发现显示的是localhost:8080/api的请求地址。这样没什么大惊小怪的,代理而已:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值