vue电商项目归纳总结(1)

简介: vue电商项目归纳总结(1)

1.吸顶效果


手写实现

思路:利用原生js的API和css的固定定位样式实现吸顶

核心步骤: 

01.获取滚动条滚动距离

document.documentElement.scrollTop

02. 事件监听

window.addEventListener('scroll', update)

03.先写一个类名使用固定定位及在钩子函数里监听和销毁

04简单的代码实现:

<template>
<nav><div :class="{show:y>78}">测试吸顶效果</div></nav>
</template>
<script>
import { onMounted, onUnmounted, ref } from 'vue'
export default {
  setup () {
    // 定义一个响应式数据
    const y = ref(0)
    const update = () => {
      y.value = document.documentElement.scrollTop
      console.log(y.value) // Y 获取滚动距离
    }
     //钩子函数(dom)页面加载时监听滚动距离
    onMounted(() => { window.addEventListener('scroll', update) })
       //钩子函数销毁定时器
    onUnmounted(() => { window.removeEventListener('scroll', update) })
    return { y }
  }
}
</script>
<style scoped>
nav{
  height: 3000px;
}
div{
  display: none;
  height: 50px;
  border: orange;
  background-color: skyblue;
  text-align: center;
  font-size: 20px;
}
.aaa{
  display: block;
  height: 300px;
  background-color: skyblue;
}
</style>

image.png

2.组装数据


业务场景:

利用v-for渲染的时候,有时候数据并不是只有一个数组,有可能是嵌套的,需要我们组装数据,如下图所示:

image.png

思路:写好我们想要的结构,然后一一赋值

image.png

image.png

注意点:1.map返回新数组list

               2.起名(如id和name要和后台的数据对应)

               3.拿到数据后v-for渲染,用然后children里面的数据 可以v-for item(父数据的每一项)

3.轮播图


业务场景:vue3手写轮播图

思路:

1.制作静态结构

2.传入图片之后渲染(通过ajax获取)

3.逻辑功能实现(渲染后的是静态的第一张图片),需要实现自动轮播、鼠标进去离开暂停开启效果 ,清理定时器

因为轮播图以后可能要用,所以注册全局组件(导入,在install里定义)

引入轮播图组件,几个小按钮

总体来言,还算简单,放出各功能核心代码:

自动轮播实现:利用v-for的下标和自己定义的变量相等时为true,控制样式(图片的显示隐藏)

 let timer = null
+    const autoPlayFn = () => {
+      clearInterval(timer)
+      timer = setInterval(() => {
+        index.value++
+        if (index.value >= props.sliders.length) {
+          index.value = 0
+        }
+      }, props.duration)
+    }
+    watch(() => props.sliders, (newVal) => {
+      // 有数据&开启自动播放,才调用自动播放函数
+      if (newVal.length && props.autoPlay) {
+        index.value = 0
+        autoPlayFn()
+      }
+    }, { immediate: true })
+

鼠标进入离开暂停 :利用鼠标进入时间@mouseenter事件和@mouseleave事件控制定时器(清除)

clearInterval(定时器ID)

销毁定时器:如果不销毁一直监听,容易出bug

1. // 组件销毁,清理定时器
2. onUnmounted(() => { clearInterval(timer)})



相关文章
|
1天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
1天前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
6天前
|
JavaScript
Vue基础知识总结 4:vue组件化开发
Vue基础知识总结 4:vue组件化开发
|
6天前
|
存储 JavaScript
Vue 状态管理工具vuex
Vue 状态管理工具vuex
|
13天前
|
缓存 JavaScript UED
Vue 中实现组件的懒加载
【10月更文挑战第23天】组件的懒加载是 Vue 应用中提高性能的重要手段之一。通过合理运用动态导入、路由配置等方式,可以实现组件的按需加载,减少资源浪费,提高应用的响应速度和用户体验。在实际应用中,需要根据具体情况选择合适的懒加载方式,并结合性能优化的其他措施,以打造更高效、更优质的 Vue 应用。
|
12天前
|
JavaScript
如何在 Vue 中使用具名插槽
【10月更文挑战第25天】通过使用具名插槽,你可以更好地组织和定制组件的模板结构,使组件更具灵活性和可复用性。同时,具名插槽也有助于提高代码的可读性和可维护性。
15 2
|
12天前
|
JavaScript
Vue 中的插槽
【10月更文挑战第25天】插槽的使用可以大大提高组件的复用性和灵活性,使你能够根据具体需求在组件中插入不同的内容,同时保持组件的结构和样式的一致性。
14 2
|
12天前
|
前端开发 JavaScript 容器
在 vite+vue 中使用@originjs/vite-plugin-federation 模块联邦
【10月更文挑战第25天】模块联邦是一种强大的技术,它允许将不同的微前端模块组合在一起,形成一个统一的应用。在 vite+vue 项目中,使用@originjs/vite-plugin-federation 模块联邦可以实现高效的模块共享和组合。通过本文的介绍,相信你已经了解了如何在 vite+vue 项目中使用@originjs/vite-plugin-federation 模块联邦,包括安装、配置和使用等方面。在实际开发中,你可以根据自己的需求和项目的特点,灵活地使用模块联邦,提高项目的可维护性和扩展性。
|
13天前
Vue3 项目的 setup 函数
【10月更文挑战第23天】setup` 函数是 Vue3 中非常重要的一个概念,掌握它的使用方法对于开发高效、灵活的 Vue3 组件至关重要。通过不断的实践和探索,你将能够更好地利用 `setup` 函数来构建优秀的 Vue3 项目。
|
13天前
|
缓存 JavaScript UED
Vue 中异步加载模块的方式
【10月更文挑战第23天】这些异步加载模块的方式各有特点和适用场景,可以根据项目的需求和架构选择合适的方法来实现模块的异步加载,以提高应用的性能和用户体验