小兔鲜vue3+ts|项目实战遇到的难点问题(1)

1 篇文章 0 订阅
1 篇文章 0 订阅

1.eslint自定义规则

eslintrc.cjs文件中把组件名必须使用组合字设置为关闭。
在这里插入图片描述

2.axios的二次封装(ts类型提示)

利用泛型和数据接口最后把请求的结果返回,此时返回是有类型提示的。
在这里插入图片描述

1.利用axios的二次封装发送请求

和正常一样使用,只是前面加上指定的泛型类型即可。
在这里插入图片描述

3.ts类型声明规划

在这里插入图片描述

统一出口
在types下的index.ts中统一出口
在这里插入图片描述

1.导入是注意加上type

在这里插入图片描述

4.实现导航吸顶效果@vueuse/core

实现效果:当浏览器窗口滚动距离上方大于78的时候,显示导航吸顶组件。
导航吸顶组件设置定位为fixed。

1.使用使用原生监听scrollTop

在这里插入图片描述

2.使用@vueuse/core包的useWindowScroll()方法

vueuse/core: 组合式API` 常用复用逻辑的集合
在这里插入图片描述
在这里插入图片描述

5.监听组件进入可视区域。(请求懒加载)

使用@vueuse/core 的useIntersectionObserver
基于此函数封装一个hook逻辑函数。

isIntersecting是一个bool值,判断是否进入可视区域。
第一个参数apiFn()是发起请求的函数。
第二个参数是是否进行继续监听。
如果想要实现,下拉继续加载,直到数据没有才停止监听的话,那可以设置flag,到flag为false,就只监听一次。
返回值为target,即要监听的ref节点。

在这里插入图片描述

1.注意:vue3中设置ref是如何设置的?

在模板节点上直接把ref设置为对应的变量,即可获取节点的dom。
在这里插入图片描述

6.使用现有的组件库

1.插件注册全局组件。

导入要使用的组件。
引入vue中的APP和Plugin,
以插件的形式注册全局组件
在这里插入图片描述

2.插件注册全局组件可能导致没有类型提示。

这段代码是为了在 TypeScript 中给组件库的组件添加类型声明,以便在使用这些组件时能够获得自动补全和类型检查等功能。具体来说,这段代码定义了一些全局组件,并通过 interface GlobalComponents 来声明它们的类型,其中使用了 typeof 来获取组件的 TS 类型。最后通过 declare module ‘vue’ 来将这些类型声明文件导出,以便其他模块可以引用。

在这里插入图片描述

7.解决路由缓存问题

在这里插入图片描述

8.修复路由滚动问题

刷新时,或者跳转其他页面组件时,希望回到顶部。则在createRouter中配置如下:
在这里插入图片描述

9.商品规格化组件sku

大致步骤:

  1. 根据后台返回的 skus 数据得到有效 sku 组合
  2. 根据有效的 sku 组合得到所有的子集集合
  3. 根据子集集合组合成一个路径字典,也就是对象。
  4. 在组件初始化的时候去判断每个规格是否点击
  5. 在点击规格的时候去判断其他规格是否可点击
  6. 判断的依据是,拿着说有规格和现在已经选中的规则取搭配,得到可走路径。
    1. 如果可走路径在字典中,可点击
    2. 如果可走路径不在字典中,禁用
      在这里插入图片描述

10.登录后页面回跳。

跳转登录时,把路径存在query中,等登录结束后,再把query里的参数拿到router.push或replace中实现跳转。

11.登录成功后有token,请求头携带token

在这里插入图片描述

12.实现第三方登录

有三种状态,一种是已经注册过且绑定。,直接跳转回首页。
第二种:注册过,但未绑定openId(qq的唯一标识),唯一标识。
第三种:未注册,进行信息完善,发送请求,回到首页。
在这里插入图片描述

参考文档:
[QQ互联JS_SDK(opens new window)](https://wiki.connect.qq.com/js_sdk使用说明#3…E8.87.AA.E5.在这里插入图片描述
AE.9A.E4.B9.89.E7.99.BB.E5.BD.95.E6.8C.89.E9.92.AE)
准备工作(opens new window)

参考05登录模块md文件。

测试使用:
在这里插入图片描述

在index.html导入sdk.js
在这里插入图片描述

在这里插入图片描述

13.切换绑定和注册切换交互

利用keepalive内置组件,保存了组件缓存。
使用来实现切换组件
在这里插入图片描述

14.@vueuse/core的useIntervalfn实现倒计时hook

参考文档:https://vueuse.org/shared/useintervalfn/
基于useIntervalFn()二次封装成hook函数
在这里插入图片描述
在这里插入图片描述

15.购物车状态

分为两种情况:未登录时,使用本地存储进行数据增栅改查。
登录时,发起请求直接修改。

当登录之后,需要合并两者购物车。

在这里插入图片描述

在这里插入图片描述
同理,修改、删除购物车都需要判断是否登录。

合并购物车状态。
在这里插入图片描述

16.层级问题

position: fixed 固定定位,指定元素相对于屏幕视口(viewport)的位置来指定元素位置。

拓展阅读:https://developer.mozilla.org/zh-CN/docs/Web/CSS/position

🐛踩坑:当元素祖先的 transform, perspectivefilter 属性非 none 时,容器由视口改为该祖先。

使用teleport传送门内置组件,来处理这个问题。

直接把弹框传送到body中。
在这里插入图片描述

17.支付宝支付

在这里插入图片描述

在这里插入图片描述
给支付宝按钮添加链接。
支付成功后,路由回携带支付的query参数。再请求订单数据渲染到支付结果页面上。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue 3和TypeScript的项目实战,有以下几个步骤可以参考: 1. 创建一个新的Vue 3项目:可以使用Vue CLI来快速创建一个基本的Vue 3项目。通过命令行运行`vue create`命令,选择使用TypeScript作为项目的语言支持。 2. 配置Vue 3的TypeScript支持:在创建项目时,选择了TypeScript后,Vue CLI会自动生成一些基本的TypeScript配置。你可以在`tsconfig.json`文件中进行进一步的配置,例如指定编译目标、模块加载器等。 3. 使用Vue 3的Composition API:Composition API是Vue 3中引入的新特性,它允许开发者更灵活地组织和重用组件逻辑。你可以在组件中使用`setup()`函数来定义组件的逻辑部分,并通过`ref()`、`reactive()`等函数来创建响应式数据。 4. 定义类型:在使用TypeScript开发Vue 3项目时,可以为组件、数据等定义类型。通过给变量、函数参数、返回值等添加类型注解,可以提供更好的代码提示和类型检查。 5. 使用Vue Router进行路由管理:如果你的项目需要使用路由管理,可以使用Vue Router。在Vue 3中,可以使用`createRouter()`函数来创建路由实例,并通过`use()`方法将其挂载到应用中。 6. 使用Vuex进行状态管理:如果你需要进行全局状态管理,可以使用Vuex。在Vue 3中,可以使用`createStore()`函数来创建Vuex实例,并通过`provide()`和`inject()`配合使用,将其注入到应用中的各个组件中。 7. 编写单元测试:在实战项目中,编写单元测试是一个重要的环节。你可以使用工具如Jest或Mocha等来编写和运行单元测试,以确保你的代码的质量和稳定性。 以上是一个基本的Vue 3和TypeScript项目实战的步骤,希望对你有所帮助!如果你有更具体的问题,欢迎继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值