Vue 3 黑马程序员小兔鲜开发

你好,我是Qiuner. 为帮助别人少走弯路而写博客

这是我的 github https://github.com/Qiuner ⭐️

gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个吧~ 我会很高兴的 😄 (^ ~ ^)

想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎

Vue 3 黑马程序员小兔鲜开发

文章目录


本文档与

https://www.yuque.com/fechaichai/td99ck/slubxnbeeigegsp5

一起配合使用

  • 一些代码设置了还是不行那要重新启动vscode
  • 第一次写博客 还是给之前写的项目写博客 本篇文档的精华是 基础数据渲染 四步走 和请求接口编写两步走 请点击目录观看这两个 你是小白也能快速掌握vue3 开发

Vue项目认识

  • main.js 文件通常是整个应用程序的入口点。它负责启动应用程序并进行必要的初始化

  • eslintrc.cjs文件用于配置ESLint,ESLint是一个js代码检查工具

  • .eslintrc 文件中,你可以定义一些规则,例如代码缩进、变量命名、使用未声明的变量、空格等问题的规则。通过配置这些规则,你可以让 ESLint 在代码中发现违反规则的地方,并给出相应的警告或错误,帮助你及时发现和修复问题,提高代码质量。

  • app 是通过 createApp 方法创建的应用程序实例对象,它是 Vue.js 3 中的概念。在 Vue.js 3 中,应用程序实例是通过 createApp 创建的,然后可以使用该实例来配置应用程序、添加全局组件、插件、指令等,并最终通过 mount 方法将应用程序挂载到 HTML 元素上,使其生效。

image-20240320165153867

基础数据渲染 四步走

第一步 导入模版/写基础代码

image-20240403111753227

image-20240403112025583

  • 先将基础的样式写好 在需要与数据同步的地方可以用

第二步 编写请求接口(在你已经拥有一个请求拦截器的情况下)

image-20240403111551009

  • 此处需要根据接口文档来进行编写接口
我没有拦截器 该怎么办?

image-20240403112629090

  • 选择你发送请求的技术 比如axios 然后看官方文档要如何操作
  • axios使用方式如上

第三步 调用获取数据接口 并查看请求有没有发出

image-20240403140448501

image-20240403140329672

第四步 查看请求数据格式并渲染数据

image-20240403140655310

  • 查看到的格式如上

  • image-20240403140913659

  • 根据数据格式完成数据渲染

请求接口编写 两步走

第一步 确认已有拦截器并根据接口文档编写

image-20240403145127826

image-20240403145224061

第二步 在实际应用中的解析

image-20240403145522259

image-20240403145608002

image-20240403145718969

  • 给按钮绑定一个点击事件 通过点击触发

通识

import {} from '@/stores/counter'
//vue里的@表示项目根

谷歌浏览器的使用

image-20240401194120183

拿到一个项目后

image-20240321173635247

  • 先查看项目的依赖
  • 然后开始装包

Vue3 语法

  • 写return在template中就可使用

image-20240320172128657

reactive

image-20240320173236103

  • 使用reactive创建一个能同步数据的对象

ref

<script>
// 使用ref函数
import { ref } from 'vue'
const count = ref(0)
console.log(count)
const setCount = () => {
  //通过value属性修改ref产生的响应式对象
  count.value++
}
</script>

<template>
  <div>
    <button @click="setCount">{{ conunt }}</button>
  </div> 
</template>

image-20240320214148037

为什么要使用ref

image-20240322112231964

computed

image-20240320220814810

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

watch

单个数据侦听

image-20240320220924446

image-20240320222646481

侦听多个数据

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

初始执行

image-20240320224246441

deep

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

精准侦听

image-20240320225211841

image-20240320230355667

生命周期

image-20240321163544308

image-20240321163723850

父子组件传递

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

组件导入与使用

image-20240321170912408

子传父

image-20240321164452710

获取组件对象

image-20240321165125998

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

组件跨越传递数据

image-20240321165320878

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 使用provide来进行传递

插槽

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

store

  • “store” 通常是指用来管理应用程序状态的地方。它是一种数据仓库,用于集中存储应用程序的数据,并提供了一系列方法来修改、获取和监听数据的变化。
  • 总得来说就是存储了所有变量与方法
  • State(状态):State 是存储应用程序状态的地方,它是响应式的,任何组件都可以访问并获取状态。在 store 中定义的状态可以被整个应用程序共享和使用。
  • Getters(获取器):Getters 是用于从状态中派生出新的状态的函数。它们类似于组件中的计算属性,用于对状态进行一些复杂的计算或过滤。
  • Mutations(变更):Mutations 是用于修改状态的函数,它们是同步的。通过提交(commit)mutation 来改变状态,每个 mutation 都有一个字符串类型的事件类型和一个回调函数,用于实际修改状态。
  • Actions(动作):Actions 是用于执行异步操作和提交 mutation 的函数。它们可以包含任意异步操作,例如请求后端数据,然后再提交 mutation 来修改状态。
  • Modules(模块):Modules 是用于将 Vuex store 分割成更小的单元,每个模块都有自己的 state、getters、mutations 和 actions,可以更好地组织和管理大型应用程序的状态。

具名导出与默认导出

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 这个就是具名导出,在别的地方导入需要使用一样的名字才能导入

项目介绍

  • 在部分使用mock模拟后端

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Pinia

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

创建空项目: npm init vue@latest

使用Pinia

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

getters

解释
  • 为了解决计算和派生问题而出现
  • 派生和计算问题是指在应用程序中需要根据已有的状态或数据计算出新的值或派生状态的情况。这些新的值或派生状态可能是基于一些逻辑计算而来,也可能是根据现有数据进行转换或过滤得到的结果。
  • 计算问题:要求原本的数据变为两倍
  • 派生问题:求学生的平均分、总分
原本的做法

{{ count * 2 }}

或者定义方法来实现

使用getters

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

const doubleCount = () =>count.value * 2

  • 如果写成这样,那这个值就是静态的,静态的不好

action

什么是异步

界面上有两个按钮 都是点一下加一的功能 但 一个点一下会过很长时间才加一的等待按钮 而一个点一下就会立刻加一的快速按钮,如果没有使用异步 那么点等待按钮后再点快速按钮快速按钮会等等待按钮加一完后再加一?而使用了异步 先点等待按钮会将等待按钮往后排,这时点快速按钮快速按钮会加一

action就是为了解决异步而诞生的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

async 是 JavaScript 中用于定义异步函数的关键字。它可以在函数声明前加上 async 关键字,表示该函数是一个异步函数,它会返回一个 Promise 对象。

使用 async 关键字定义的函数,可以在函数内部使用 await 关键字来等待一个 Promise 对象的解析结果。这样可以让 JavaScript 在等待异步操作完成时暂停函数执行,并在异步操作完成后继续执行函数。

async 函数的主要作用是简化异步操作的编写,使得异步代码更加清晰和易于理解。它可以让开发者以同步的编码风格书写异步代码,避免了回调地狱,提高了代码的可读性和可维护性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

StoreToRefs

使用方式

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

区分方法与属性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

局部组件与全局组件

在 Vue 中,局部组件和全局组件是两种不同的组件注册方式,它们有以下区别:

  1. 作用域
    • 局部组件:局部组件只在其所在的组件中可用,不能在其他组件中直接使用。
    • 全局组件:全局组件在整个 Vue 应用中都可用,可以在任何组件中直接使用。
  2. 注册方式
    • 局部组件:局部组件通过在组件的 components 选项中注册。
    • 全局组件:全局组件通过 Vue.component 方法进行注册。
  3. 作用范围
    • 局部组件:适用于只在当前组件内部使用的组件,通常用于对当前组件进行细分和模块化。
    • 全局组件:适用于在整个应用中多次使用的组件,通常用于共享和重复利用的组件。
  4. 命名冲突
    • 局部组件:局部组件的命名只在当前组件内部有效,不会影响其他组件中同名的组件。
    • 全局组件:全局组件的命名是全局唯一的,如果使用相同名称注册多个全局组件,后注册的组件会覆盖先注册的组件。
  5. 加载性能
    • 局部组件:只有在需要时才会被加载和渲染,可以减少不必要的加载和性能开销。
    • 全局组件:在应用启动时就会被加载和注册,可能会增加初始加载时间和资源占用。

总的来说,局部组件适用于组件内部的功能模块化和封装,而全局组件适用于整个应用中共享和重复利用的组件。选择何种注册方式取决于你的具体需求和组件的使用场景。

在开发者的感受中,使用局部组件需要导入,而使用全局组件不需要进行导入

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 图里代码app写在定义函数前面了

跟着视频走

初始化项目

项目目录

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

git init
git add .
git commit -m ""
一:创建项目别名路径
**二:**自动按需导入
https://element-plus.gitee.io/zh-CN/guide/quickstart.html
三:配色文件问题
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// 导入对应包
import ElementPlus from 'unplugin-element-plus/vite'
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [
        // 1. 配置elementPlus采用sass样式配色系统
        ElementPlusResolver({ importStyle: "sass" })
      ],
    }),
    // 按需定制主题配置
    ElementPlus({
      useSource: true,
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  css: {
    preprocessorOptions: {
      scss: {
        // 2. 自动导入定制化样式文件进行样式覆盖
        additionalData: `
          @use "@/styles/element/index.scss" as *;
        `,
      }
    }
  }
})

四:axios
  • axios的作用就是发送请求,这里定义了一个拦截器,用来统一发送请求前后做的各种事
import axios from 'axios'

// 创建axios实例
const httpinstance = axios.create({
    // 设置url拼接
    baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net',
    timeout: 5000
})

// axios请求拦截器
httpinstance.interceptors.request.use(config => {
    // 在发送请求前 做什么 这里逻辑是什么都不做
    return config
    // 请求发送错误 返回一个Promise 这个用来显示请求发送错误的信息
}, e => Promise.reject(e))

// axios响应式拦截器
// 在服务器响应后进行处理
// 处理逻辑是响应成功则把正确的data打印出来,失败则使用promise对象给出错误信息
httpinstance.interceptors.response.use(res => res.data, e => {
    return Promise.reject(e)
})

//组件导出
export default httpinstance
import httpinstance from '@/utils/http'
//导入组件,然后定义一个导出的方法
export function getCategoryAPI() {
    return httpinstance({
        url: 'home/category/head'
    })
}
//这个方法发送一个请求,使用axios的方法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

五、页面路由设置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二级路由

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

// createRouter:创建router实例对象
// createWebHistory:创建history模式的路由

import { createRouter, createWebHistory } from 'vue-router'
import Login from '@/views/Login/index.vue'
import Layout from '@/views/Layout/index.vue'
import Home from '@/views/Home/index.vue'
import Category from '@/views/Category/index.vue'

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  // path和component对应关系的位置
  routes: [
    {
      path: '/',
      component: Layout,
      children: [
        {
          path: '',
          component: Home
        },
        {
          path: 'category',
          component: Category
        }
      ]
    },
    {
      path: '/login',
      component: Login
    }
  ]
})

export default router

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

六、静态资源

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

七、自动导入

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 配置这个文件的时候注意,如果加了还不行得重启

主页

使用阿里巴巴图标库

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

渲染导航

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

吸顶导航

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

VueUse

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 使用vueUse获取距离

优化项目

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用elementPlus实现轮播图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

组件封装

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片懒加载

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

// 懒加载指令逻辑
app.directive('img-lazy', {
    mounted(el, binding) {
        // el: 指令绑定的那个元素 img
        // binding: binding.value  指令等于号后面绑定的表达式的值  图片url
        console.log(el, binding.value)
        useIntersectionObserver(
            el,
            ([{ isIntersecting }]) => {
                console.log(isIntersecting)
                if (isIntersecting) {
                    // 进入视口区域
                    el.src = binding.value
                }
            },
        )
    }
})

然后在需要使用的地方就可以通过v-img-lazy

优化

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

组件封装

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

认识路由

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

面包屑导航

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 实现思路是点击面包屑的时候页面不是会跳转到相应页面,于是将相应页面的id存在数据库中,在查询后看对得上哪个,对得上就用。url的数字叫路由id

改造轮播图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

路由问题

vue路由认识

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 剩下的二级路由,使用函数来进行操作

路由缓存问题解决

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 就是点击小导航不改变页面数据了,而是直接用缓存的数据,以为只加上了数字

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

定制路由滚动行为

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分类

二级路由组件导航

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

列表切换

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个坑

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 不然会爆找不到属性的错

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

列表筛选功能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 使用elementplus实现
  • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

        <div class="sub-container">
            <el-tabs v-model="reqData.sortField" @tab-change="tabChange">
                <el-tab-pane label="最新商品" name="publishTime"></el-tab-pane>
                <el-tab-pane label="最高人气" name="orderNum"></el-tab-pane>
                <el-tab-pane label="评论最多" name="evaluateNum"></el-tab-pane>
            </el-tabs>
百度一下即可

列表无限加载功能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

https://element-plus.gitee.io/zh-CN/component/overview.html
想要啥特效就去里面找好了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

渲染问题

       <!-- 
                        goods一开始为空 {}categories -> undefined
                        1、使用可选链语法 ?.
                        2、v-if控制渲染时机

                     -->
                    <el-breadcrumb-item :to="{ path: `/category/${goods.categories?.[1].id}` }">{{
                        goods.categories?.[1].name }}
                    </el-breadcrumb-item>
                    <el-breadcrumb-item :to="{ path: `/category/sub${goods.categories?.[0]}.id` }">{{ goods.categories?.[0].name }}
                    </el-breadcrumb-item>

页面title

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

小图切换大图实现

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SKU组件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

表单校验

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自定义校验逻辑

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

防止用户一上来就点击登录

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

登录功能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接口设计

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

参数解构赋值

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

拦截器统一项目错误信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用Pinia进行管理用户数据

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

js中的函数调用方式

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

项目账号密码

account password
cdshi0080 123456
cdshi0081 123456
cdshi0082 123456
cdshi0083 123456
cdshi0084 123456
cdshi0085 123456
cdshi0086 123456
cdshi0087 123456
cdshi0088 123456

pinia数据持久化

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

npm install pinia-plugin-persistedstate

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

请求拦截器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

谷歌调试Pinia

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Pinia数据持久化大问题

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多模板适配

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

请求头携带token

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

退出登录

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Token失效401拦截处理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本地购物车操作

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

购物车图标

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

删除购物车

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

购物车价格计算

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

购物车基础

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

购物车单选框按钮

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

全选框

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

购物车统计数量

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

购物车价格计算

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 没有什么好说的
  • 多掌握数组函数

接口购物车

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

加入购物车

  • 判断token存不存在

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

清除购物车中内容

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

合并购物车

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 合并购物车操作

结算页面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

地址切换

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 这里查看浏览器vue插件时会出现一点问题

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 面板数据不显示 这不是个人代码写的问题,而是项目后端接口被请求太多次

支付

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

支付面板渲染

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 这样写就能够完成支付宝跳转功能
const baseURL = 'http://pcapi-xiaotuxian-front-devtest.itheima.net/'
const backURL = 'http://127.0.0.1:5173/paycallback'
const redirectUrl = encodeURIComponent(backURL)
const payUrl = `${baseURL}pay/aliPay?orderId=${route.query.id}&redirect=${redirectUrl}`

支付宝沙箱账号

账号jfjbwb4477@sandbox.com
登录密码111111
支付密码111111

支付结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

倒计时功能实现

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 注意编写定时器的时候要在定时器结束时销毁定时器

个人中心

路由配置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

订单基础列表渲染

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Tab切换

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分页逻辑实现

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

vue2 学习

  1. Vue 实例及组件:学习 Vue.js 的基础概念,包括如何创建 Vue 实例、组件的定义和使用、组件之间的通信等。
  2. 模板语法:掌握 Vue.js 的模板语法,包括插值、指令、事件绑定、计算属性等,这些都是用于构建动态视图的基础。
  3. 计算属性和监听器:了解计算属性和监听器的用法,以及它们在 Vue 实例中的应用场景。
  4. 条件渲染和列表渲染:学习如何使用 v-if、v-else、v-show 等指令进行条件渲染,以及如何使用 v-for 指令进行列表渲染。
  5. 表单处理:了解 Vue.js 中表单处理的方法,包括双向绑定、表单输入绑定、表单验证等。
  6. 组件通信:学习组件之间的通信方式,包括 props 和事件、$emit 和 o n 、 on、 onrefs 等。
  7. 路由管理:学习使用 Vue Router 进行路由管理,实现单页应用的路由导航。
  8. 状态管理:学习使用 Vuex 进行状态管理,管理应用程序的共享状态,实现数据的集中管理。
  9. 生命周期钩子:了解 Vue.js 的生命周期钩子函数,掌握它们的执行顺序和用法。
  10. Vue.js 的核心概念:包括响应式数据、虚拟 DOM、组件生命周期等核心概念,深入理解这些概念有助于更好地使用 Vue.js 开发应用程序。

vue3学习

学习 Vue.js 3.x 版本时,你需要掌握以下内容:

  1. Composition API:Vue 3 引入了 Composition API,它是一种全新的组织组件代码的方式,使得组件逻辑更加清晰、灵活。学习如何使用 Composition API 来组织组件代码是学习 Vue 3 的重要内容。
  2. 响应式数据:了解 Vue 3 中的响应式数据系统,包括如何使用 reactive、ref、computed 等 API 来创建响应式数据,并且理解其原理。
  3. 模板语法:掌握 Vue 3 的模板语法,与 Vue 2.x 类似,但也有一些改动和新增,比如 v-model 的用法变化、事件修饰符的更新等。
  4. Teleport:学习使用 Teleport 特性来实现 Portal,可以将组件的 DOM 结构渲染到任意 DOM 节点上,而不仅仅是当前组件的父节点。
  5. Suspense:学习使用 Suspense 组件来优雅地处理异步组件加载过程中的状态,提升用户体验。
  6. 组件 API:学习 Vue 3 中组件的各种 API,包括 setup 函数、生命周期钩子、provide/inject、props 等。
  7. 响应式 API:除了 Composition API 外,还要了解 Vue 3 中的其他响应式 API,比如 watch、watchEffect 等。
  8. Vue Router:了解 Vue 3 中的路由管理,Vue Router 4 支持 Vue 3,并且有一些新特性和改进。
  9. Vuex:了解 Vue 3 中的状态管理,Vuex 4 也已经支持 Vue 3,并且有一些新的特性和改进。
  10. Vue.js 的核心概念:包括虚拟 DOM、组件生命周期、数据绑定、事件处理等核心概念,Vue 3 中这些概念依然存在并且有所改进。

计算属性和监听器:了解计算属性和监听器的用法,以及它们在 Vue 实例中的应用场景。
4. 条件渲染和列表渲染:学习如何使用 v-if、v-else、v-show 等指令进行条件渲染,以及如何使用 v-for 指令进行列表渲染。
5. 表单处理:了解 Vue.js 中表单处理的方法,包括双向绑定、表单输入绑定、表单验证等。
6. 组件通信:学习组件之间的通信方式,包括 props 和事件、$emit 和 o n 、 on、 onrefs 等。
7. 路由管理:学习使用 Vue Router 进行路由管理,实现单页应用的路由导航。
8. 状态管理:学习使用 Vuex 进行状态管理,管理应用程序的共享状态,实现数据的集中管理。
9. 生命周期钩子:了解 Vue.js 的生命周期钩子函数,掌握它们的执行顺序和用法。
10. Vue.js 的核心概念:包括响应式数据、虚拟 DOM、组件生命周期等核心概念,深入理解这些概念有助于更好地使用 Vue.js 开发应用程序。

vue3学习

学习 Vue.js 3.x 版本时,你需要掌握以下内容:

  1. Composition API:Vue 3 引入了 Composition API,它是一种全新的组织组件代码的方式,使得组件逻辑更加清晰、灵活。学习如何使用 Composition API 来组织组件代码是学习 Vue 3 的重要内容。
  2. 响应式数据:了解 Vue 3 中的响应式数据系统,包括如何使用 reactive、ref、computed 等 API 来创建响应式数据,并且理解其原理。
  3. 模板语法:掌握 Vue 3 的模板语法,与 Vue 2.x 类似,但也有一些改动和新增,比如 v-model 的用法变化、事件修饰符的更新等。
  4. Teleport:学习使用 Teleport 特性来实现 Portal,可以将组件的 DOM 结构渲染到任意 DOM 节点上,而不仅仅是当前组件的父节点。
  5. Suspense:学习使用 Suspense 组件来优雅地处理异步组件加载过程中的状态,提升用户体验。
  6. 组件 API:学习 Vue 3 中组件的各种 API,包括 setup 函数、生命周期钩子、provide/inject、props 等。
  7. 响应式 API:除了 Composition API 外,还要了解 Vue 3 中的其他响应式 API,比如 watch、watchEffect 等。
  8. Vue Router:了解 Vue 3 中的路由管理,Vue Router 4 支持 Vue 3,并且有一些新特性和改进。
  9. Vuex:了解 Vue 3 中的状态管理,Vuex 4 也已经支持 Vue 3,并且有一些新的特性和改进。
  10. Vue.js 的核心概念:包括虚拟 DOM、组件生命周期、数据绑定、事件处理等核心概念,Vue 3 中这些概念依然存在并且有所改进。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qiuner

谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值