【vue2项目总结】——相关功能

简介: 【vue2项目总结】——相关功能

@[toc]

搜索栏搜索

点击搜索,或者下面搜索历史按钮,都要进行搜索历史记录更新 (去重,新搜索的内容置顶)

<div @click="goSearch(search)">搜索</div>

<div class="list">
  <div v-for="item in history" :key="item" @click="goSearch(item)" class="list-item">
    {
   
   {
   
    item }}
  </div>
</div>

goSearch (key) {
   
   
  const index = this.history.indexOf(key)
  if (index !== -1) {
   
   
    this.history.splice(index, 1)
  }  // 如果原先存在,先删掉
  this.history.unshift(key) // 存入搜索历史
  this.{
   
   mathJaxContainer[0]}{
   
   key}`)
}

加入购物车 - 唤起弹窗

在这里插入图片描述

<van-action-sheet v-model="showPannel" :title="mode === 'cart' ? '加入购物车' : '立刻购买'"> // 定义title和showPannel方便切换
    111
</van-action-sheet>

data () {
   
   
  return {
   
   
    ...
    mode: 'cart' // 默认是购物车
    showPannel: false
  }
},

注册点击事件,点击时唤起弹窗

<div class="btn-add" @click="addFn">加入购物车</div>
<div class="btn-buy" @click="buyFn">立刻购买</div>

addFn () {
   
   
  this.mode = 'cart'
  this.showPannel = true
},
buyFn () {
   
   
  this.mode = 'buyNow'
  this.showPannel = true
}

配置token

请求拦截器中,统一携带 token

// 自定义配置 - 请求/响应 拦截器
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
   
   
  ...
  const token = store.getters.token
  if (token) {
   
   
    config.headers['Access-Token'] = token
    config.headers.platform = 'H5'
  }
  return config
}, function (error) {
   
   
  // 对请求错误做些什么
  return Promise.reject(error)
})

结算功能

封装通用 API 接口 api/order

import request from '@/utils/request'

export const checkOrder = (mode, obj) => {
   
   
  return request.get('/checkout/order', {
   
   
    params: {
   
   
      mode,
      delivery: 0,
      couponId: 0,
      isUsePoints: 0,
      ...obj
    }
  })
}

在这里插入图片描述

通过购物车结算

1 跳转时,传递查询参数

<div @click="goPay">结算({
   
   {
   
    selCount }})</div>

goPay () {
   
   
  if (this.selCount > 0) {
   
   
    this.$router.push({
   
   
      path: '/pay',
      query: {
   
   
        mode: 'cart',
        cartIds: this.selCartList.map(item => item.id).join(',')
      }
    })
  }
}

2 页面中接收参数, 调用接口,获取数据

data () {
   
   
  return {
   
   
    order: {
   
   },
    personal: {
   
   }
  }
},

computed: {
   
   
  mode () {
   
   
    return this.$route.query.mode
  },
  cartIds () {
   
   
    return this.$route.query.cartIds
  }
}

async created () {
   
   
  this.getOrderList()
},

async getOrderList () {
   
   
  if (this.mode === 'cart') {
   
   
    const {
   
    data: {
   
    order, personal } } = await checkOrder(this.mode, {
   
    cartIds: this.cartIds })
    this.order = order
    this.personal = personal
  }
}

立即购买结算

1 点击跳转传参

<div class="btn" v-if="mode === 'buyNow'" @click="goBuyNow">立刻购买</div>

goBuyNow () {
   
   
  this.$router.push({
   
   
    path: '/pay',
    query: {
   
   
      mode: 'buyNow',
      goodsId: this.goodsId,
      goodsSkuId: this.detail.skuList[0].goods_sku_id,
      goodsNum: this.addCount
    }
  })
}

2 计算属性处理参数

computed: {
   
   
  ...
  goodsId () {
   
   
    return this.$route.query.goodsId
  },
  goodsSkuId () {
   
   
    return this.$route.query.goodsSkuId
  },
  goodsNum () {
   
   
    return this.$route.query.goodsNum
  }
}

3 基于请求时携带参数发请求渲染

async getOrderList () {
   
   
  ...

  if (this.mode === 'buyNow') {
   
   
    const {
   
    data: {
   
    order, personal } } = await checkOrder(this.mode, {
   
   
      goodsId: this.goodsId,
      goodsSkuId: this.goodsSkuId,
      goodsNum: this.goodsNum
    })
    this.order = order
    this.personal = personal
  }
}
目录
相关文章
|
1月前
|
JavaScript 数据可视化
vue-cli学习一:vue脚手架的 vue-cli2和vue-cli3版本 创建vue项目,vue的初始化详解
这篇文章介绍了如何使用vue-cli 2和3版本来创建Vue项目,并详细说明了两者之间的主要区别。
88 5
vue-cli学习一:vue脚手架的 vue-cli2和vue-cli3版本 创建vue项目,vue的初始化详解
|
1月前
|
JavaScript 容器
乾坤qiankun框架搭建 主应用为vue3的项目。
乾坤qiankun框架搭建 主应用为vue3的项目。
149 2
|
1月前
|
JavaScript
Vue CLi脚手架创建第一个VUE项目
Vue CLi脚手架创建第一个VUE项目
35 3
|
22天前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
8天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
1月前
|
JavaScript 数据可视化
vue-cli学习二:vue-cli3版本 创建vue项目后,Runtime-Compiler和Runtime-only两个模式详解;vue项目管理器;配置文件的配置在哪,以及如何配置
这篇文章详细介绍了Vue CLI 3版本创建项目时的Runtime-Compiler和Runtime-only两种模式的区别、Vue程序的运行过程、render函数的使用、eslint的关闭方法,以及Vue CLI 2和3版本配置文件的不同和脚手架3版本创建项目的配置文件配置方法。
40 3
vue-cli学习二:vue-cli3版本 创建vue项目后,Runtime-Compiler和Runtime-only两个模式详解;vue项目管理器;配置文件的配置在哪,以及如何配置
|
25天前
|
JavaScript
如何在 Vue 项目中选择合适的模块格式
【10月更文挑战第20天】选择合适的模块格式需要综合考虑多个因素,没有一种绝对正确的选择。需要根据项目的具体情况进行权衡和分析。在实际选择过程中,要保持灵活性,根据项目的发展和变化适时调整模块格式。
20 7
|
21天前
Vue3 项目的 setup 函数
【10月更文挑战第23天】setup` 函数是 Vue3 中非常重要的一个概念,掌握它的使用方法对于开发高效、灵活的 Vue3 组件至关重要。通过不断的实践和探索,你将能够更好地利用 `setup` 函数来构建优秀的 Vue3 项目。
|
25天前
|
JavaScript 前端开发 编译器
在 Vue 项目中使用 ES 模块格式的优点
【10月更文挑战第20天】在 Vue 项目中使用 ES 模块格式具有众多优点,这些优点共同作用,使得项目能够更高效、更可靠地开发和运行。当然,在实际应用中,还需要根据项目的具体情况和需求进行合理的选择和配置。
29 6
|
21天前
|
JavaScript 测试技术 UED
解决 Vue 项目中 Tree shaking 无法去除某些模块
【10月更文挑战第23天】解决 Vue 项目中 Tree shaking 无法去除某些模块的问题需要综合考虑多种因素,通过仔细分析、排查和优化,逐步提高 Tree shaking 的效果,为项目带来更好的性能和用户体验。同时,持续关注和学习相关技术的发展,不断探索新的解决方案,以适应不断变化的项目需求。