笔记整理——Vue2项目尚品汇

2022-12-31 12:29:19

目录

一、vue-cli脚手架初始化项目各文件夹

二、 项目的其他配置

2.1 项目运行,让浏览器自动打开

2.2 eslint校验功能(各种规范的报错)的关闭

2.3 src文件夹简写方法,配置别名

2.4 样式的引入

三. 本次项目路由的分析

四. 完成非路由组件Header与Footer业务

五. 路由组件的搭建

5.1 配置路由

5.2 路由组件与非路由组件的区别?

5.3 路由的跳转的两种形式

5.4 重定向    

六. Footer组件显示与隐藏

6.1 v-if和v-show的区别

6.2 Footer组件编写

七. 路由传参

7.1 路由跳转的两种形式

7.2 路由传参(params、query)

7.3 路由传参相关问题

八. 重写push和replace

8.1 为什么编程式导航进行路由跳转时,会有这种警告错误?

九. Home首页组件拆分业务分析

9.1. TypeNav的三级联动全局组件

9.2. 完成其余静态组件

十. POSTMAN测试接口

十一. axios二次封装

11.1 为什么需要进行二次封装axios?

11.2 在项目中,经常会有API文件夹【里面存放的就是axios请求】

 十二. API接口统一管理

12.1 跨域问题

十三. nprogress进度条的使用

13.1 打开页面时,页面上方显示的进度条。

十四. Vuex状态管理库

14.1 vuex是什么?

14.2 Vuex的四个大核心概念

14.3 this.$state.dispatch与this.$state.commit的主要区别

14.4 vuex实现模块式开发的大致概念

十五. TypeNav三级联动展示数据业务

十六. 完成三级联动动态背景颜色

十七. 函数的防抖与节流【lodash插件】

17.1 卡顿现象引入函数的防抖与节流

17.2 函数防抖的理解

17.3 函数节流的理解 

十八. 三级联动

18.1 三级联动中的节流

18.2 三级联动中的路由跳转分析

18.3 用编程式导航 + 事件的委派

十九. Search模块

19.1 Search模块商品模块分类与过渡动画

19.2 typeNav商品分类列表的优化

19.3 合并query和params参数

19.4 mockjs模拟数据

19.5 获取banner轮播图的数据

二十. swiper的基本使用

20.1 Banner实现轮播图的第一种方法

二十一. 轮播图通过watch+nectTick解决问题

21.1 若只用watch监听bannerList轮播图列表的属性

21.2 用watch + this.$neckTick(较为完美的解决方案)

二十二. 获取Floor组件mock数据

22.1 组件通信的方式有哪些?

22.2 动态展示Floor组件

22.3 共用组件Carsouel(轮播图)

二十三. Search模块的静态组件

23.1 写一个模块的步骤(套路):

23.2 箭头函数

二十四. search模块中动态展示产品列表

24.1 Search模块中子组件SearchSelector.vue的动态开发

二十五. Object.assign的用法

二十六. 面包屑

26.1 面包屑处理分类的操作

26.2 面包屑处理关键字的操作

26.3 面包屑处理品牌信息

二十七.平台售卖属性的操作

27.1 子组件传给父组件(用自定义事件)

27.2 将平台售卖属性放置面包屑(数组去重)

二十八. 排序操作(上)

二十九. 操作排序——对升序降序的操作(下)

三十. 分页器静态组件(分页器原理)

三十一. 分页器起始与结束数字计算(分页器逻辑)

31.1 分页器起始与结束(分页器显示的逻辑)

31.2 分页器的动态展示(分页器按钮显示的逻辑)

31.3 分页器的完成

31.4 分页器添加类名

三十二. 产品详情页面——滚动行为

三十三. 产品详情页面数据获取

33.1 产品详情页面数据获取

33.2 产品详情页面动态展示数据

33.3 产品详情页面动态展示数据——右侧

三十四. Zoom放大镜展示数据—裁剪

三十五. detail路由组件展示商品售卖属性

三十六. 产品售卖属性值——排他操作—裁剪

三十七. 放大镜操作(上)

37.1 放大镜操作——ImageList组件和Zoom组件之间的小操作

37.2 放大镜操作——大图片随着小图片的点击也进行改变

37.3 放大镜操作——遮罩层

三十八. 购买产品个数的操作

三十九. “加入购物车”路由

39.1 ”加入购物车“按钮的步骤

39.2 路由传递参数结合会话存储(成功路由跳转与参数传递)

39.3 购物车静态组件与修改

39.4 UUID游客身份获取购物车数据

39.5 购物车动态展示数据

39.6 处理产品数量、修改购物车产品的数量完成

39.7 修改产品个数【对函数进行节流】

39.8 删除购物车产品的操作

39.9 修改产品状态

四十. 删除全部选中的商品

四十一. "全部"产品的勾选状态修改

四十二. 登录注册静态组件【重要】

42.1 注册的静态组件

42.2 登录的静态组件

42.3 携带token获取用户信息

42.4 上一节登录业务存在的问题讲解(不完美的解决办法)

42.5 退出登录

四十三. 导航守卫理解

43.1 导航守卫的判断与操作

四十四. trade交易静态组件

44.1. trade交易静态组件

44.2 用户地址信息的展示(排他思想)

44.3 交易页面完成

四十五. 提交订单(不用vuex)

45.1 提交订单静态组件(不用vuex)

45.2 提交订单(没有vuex时,可以用的方法)

四十六. 获取订单号与展示信息

四十七. 支付页面中使用Element UI以及按需引入

四十八. 微信支付业务(上)

48.1 二维码生成(插件QRCODE)

48.2 获取支付订单状态

四十九. 个人中心——二级路由搭建

五十. 我的订单

五十一. 未登录的导航守卫判断(前置守卫)

五十二. 用户登录(路由独享与组件内守卫)

52.1 路由独享守卫

52.2 组件内守卫(用得不多)

五十三. 图片懒加载(插件:vue-lazyload)

五十四. 表单验证(插件:vee-validate)【了解即可,看懂就行】

五十五. 路由的懒加载

五十六. 处理map文件、打包上线

五十七. 购买服务器等操作(先了解)

57.1 利用xshell工具登录服务器

57.2 nginx反向代理



VUE2项目尚品汇笔记

将Typora记录的笔记、以及手写的笔记进行二次整理。

整理完本次笔记,也会继续将之前学习HTML、CSS、JS、Vue的笔记进行二次整理。

方便以后查找,同时有需要改正或补充的,还请大家指教。

一、vue-cli脚手架初始化项目各文件夹

node_modules文件夹:项目依赖文件夹

public文件夹:一般放置一些静态资源(图片等)。注:放在public文件夹中的静态资源,当webpack进行打包时候,会原封不动打包到dist文件夹中

src文件夹(程序员源代码文件夹):

        assets文件夹:一般放置静态资源(一般放置多个组件共用的静态资源)。注:放置在assets文件夹里的静态资源,在webpack打包时,会把它当做一个模块,打包到JS文件里

         components文件夹一般放置的是非路由组件(全局组件)。

        App.vue:唯一的根组件,Vue当中的组件(.vue)。

        main.js:程序入口文件,也是整个程序当中最先执行的文件

babel.config.js:配置文件(babel相关)。

package.json文件:类似于项目的‘身份证’,记录项目叫什么,当中有哪些依赖,如何运行

package.lock.json文件:缓存性文件。

README.md文件:说明性文件。

二、 项目的其他配置

2.1 项目运行,让浏览器自动打开

package.json文件中配置

{
......
        "scripts": {
        "serve": "vue-cli-service serve --open",
        "build": "vue-cli-service build",
        "lint": "vue-cli-service lint"
    },
......

2.2 eslint校验功能(各种规范的报错)的关闭

eg:声明了变量,但未进行使用,则eslint校验工具会报错

  • 在根目录下创建文件vue.config.js
    module.exports = {
        //关闭eslint
        lintOnSave: false
    }

2.3 src文件夹简写方法,配置别名

①.jsconfig.json配置别名,可用@提示

【@代表的是src文件夹,常在js文件中使用。"exclude"表示“除了......”,意为配置的别名不能在"node_modules"和"dist"使用】

{
    "compilerOptions":{
        "baseUrl":"./",
        "paths":{
                "@/*":["src/*"]
            }

    //表示不能在"node_modules"和"dist"中使用这种配置的别名。
    "exclude":["node_modules","dist"]
    },

②.也可在.css中配置别名@提示 【在@前面加上~这个符号】

<style>
......
background-image: url(~@/assets/images/icons.png);
......
</style>

2.4 样式的引入

public文件夹下的index.html中引入同级reset.css样式

    <link  href="/reset.css">

三. 本次项目路由的分析

vue-router 前端的路由:KV键值对。

key:URL(地址栏中的路径) value:相应的路由组件 注:本次项目是上中下结构

  • 本次项目的路由组件可分为:

        Home首页路由组件、Search搜索路由组件、login登录路由组件、Refister注册路由组件

  • 本次项目的非路由组件可分为:

         Header组件:【存在于首页、搜索页】 Footer组件:【存在于首页、搜索页,但登录和注册页面没有】

四. 完成非路由组件Header与Footer业务

本次项目主要关注业务、逻辑。

  • 开发项目步骤:
  1. 书写静态页面(HTML+CSS)(本次项目已提前准备好了)
  2. 拆分组件(静态组件、路由组件等)
  3. 获取服务器的数据动态展示
  4. 完成相应的动态业务逻辑(eg:Js动态业务等)
  • 注意:
  1. 创建组件=组件结构 + 组件的样式 + 图片资源。
  2. 本次采用less样式。

        需通过less、less-loader【安装版本五npm install --save less less-loader@5进行处理less,将其变为css样式。

        若想让组件识别less样式,需在style标签上加上lang=less。<style lang="less" scoped>

五. 路由组件的搭建

        经过上面的分析,本次项目的路由组件有四个:

                 Home首页、Search搜索、Login登录、Register注册。

        components文件夹:经常放置非路由组件(共用的全局组件).

        pagesviews文件夹:经常放置路由组件

5.1 配置路由

项目当中配置的路由一般放置在router文件夹中的index.js里。路由配置好之后在入口文件main.js中引入。

5.2 路由组件与非路由组件的区别?

  • 共同点:

         注册完路由,不管是路由组件、还是非路由组件,它们身上都会有$route、$router属性
           $route:一般获取路由信息【路径、query、params等】
           $router:一般进行编程式导航,进行路由跳转【push或replace(其中一个是有缓存记忆的)】

  • 不同点:
路由组件 非路由组件(普通组件)
一般放置在pagesviews文件夹中 一般放置在components文件夹中。

一般需要在router文件夹中进行注册

(使用的名字即为组件的名字,例如router文件中的index.js的写法)

在App.vue中展示时,

用的是<router-view></router-view>

一般以标签的形式使用

(例如App.vue里的<Header></Header>标签)。

5.3 路由的跳转的两种形式

        ① 声明式导航:router-link

        ② 编程式导航:push或replace

        编程式导航:声明式导航能做的,编程式导航都能做;而且编程式导航不仅可以进行路由跳转,还做一些其他业务逻辑。

5.4 重定向    

        redirect重定向:在项目跑起来时就访问该页面(该方法可以立马让其定向到首页)

        在router的index.js里书写重定向代码:

  //redirect重定向:在项目跑起来时就访问该页面(该方法可以立马让其定向到首页)

//配置路由,路由的单词都是小写的
export default [
......
{
        path: '*',
        redirect: './home'
    }
......
]

六. Footer组件显示与隐藏

6.1 v-if和v-show的区别

显示or隐藏,可用v-if或者v-show。两者都是动态显示DOM元素。

v-if初始化较快,但代价较高;v-show初始化较慢,但切换成本低。

v-if v-show
动态向Dom内添加或删除DOM元素 通过设置DOM元素的display样式属性控制显示或隐藏
切换有一个局部编译/卸载的过程,过程中可能会销毁和重建内部的事件监听和子组件。 单纯地基于css切换

惰性的;

初始值为假时,不作任何操作;只有在条件第一次为真时才开始局部编译。被缓存后,再次切换时进行局部卸载。

无论首次条件是否为真,都可被编译;被缓存且DOM元素保留。
有更高的切换消耗 有更高的初始化渲染消耗
适合运营条件不大可能改变的场景 适合频繁切换的场景

6.2 Footer组件编写

本次项目在Home首页、Search搜索显示Footer组件,但是在Login登录Register注册时隐藏Footer组件。

可根据组件身上的$route获取当前路由的信息,通过路由路径判断HomeFooter这俩非路由组件的显示与隐藏。

<!-- 写法一(不推荐): -->
      <Footer v-show="$route.path=='/home'||$route.path=='/search'"></Footer>

配置路由时,可给路由添加路由元信息【meta】,注意路由配置对象的key不能乱写。

APP.vue文件中:

 <!-- 写法二: -->
      <Footer v-show="$route.meta.show"></Footer>

router文件index.js中配置【meta】

//配置路由
export default new VueRouter({
    routes: [{
            path: "/home",
            component: Home,
            meta: { show: true }
        },{
            path: "/search",
            component: Search,
            meta: { show: true }
        },{
            path: "/login",
            component: Login,
            meta: { show: false }
        },{
            path: "/register",
            component: Register,
            meta: { show: false }
        },
        //重定向:在项目跑起来时就访问该页面(该方法可以立马让其定向到首页)
        {
            path: '*',
            redirect: './home'
        }
    ]
})

七. 路由传参

了解URL语法格式

https://blog.csdn.net/Thaley/article/details/122286201

格式:protocol :// hostname[:port] / path / [;parameters][?query]#fragment

   [ ]中的内容可有可无

        即:协议 :// 主机名[:端口号] / 路径 / [;参数][?查询]#信息片断

7.1 路由跳转的两种形式

eg:A -> B

①声明式导航:router-link(务必要有to属性),<router-link to="......"></router-link>可实现路由跳转。

②编程式导航:利用组件实例的$router.pushreplace方法,可实现路由的跳转,也可书写一些自己的业务逻辑。

7.2 路由传参(params、query)

①params参数:属于路径的一部分,需注意,在配置路由的时候,需要占位

如路径的path:"/search/:keyword",/:keyword即为params参数的占位符。

②query参数:不属于路径的一部分,类似于ajax中的queryString /home?k=v&kv=, 不需占位

params参数 query参数
  • 作者:Thaley
  • 原文链接:https://blog.csdn.net/Thaley/article/details/122264528
    更新时间:2022-12-31 12:29:19
Copyright © 2022 忙忙碌碌网 

把实用的技术和经验,分享给最需要的读者,希望每一位来访的朋友都能有所收获!

  • 文章目录