vue2项目复习

一、vue-cli脚手架初始化

方法:(在有网络的情况下)文件路径打开cmd 输入vue create app
前提环境:node、webpack、淘宝镜像(下载依赖会快很多)

二、下载完成后app目录分析

1.node_modules文件夹:项目依赖

eg : @babel 可以把ES6转化(翻译)为ES5,这样兼容性更好

2.public文件夹:

注意:放置一些静态资源(图片等),这里的静态资源在webpack进行打爆的时候,会原封不动打包到dist文件夹中
eg : index.html静态页面   favicon.ico图标

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

(1)assets:一般放置(多个组件共用)静态资源,在webpack打包时,webpack会把它当作一个模块,打包到js文件里
(2)components:放置非路由组件(全局组件)
(3)App.vue:唯一的根组件
(4) main.js:程序入口文件,也是整个程序当中最先执行的文件
(5) gitignore
(6) babel.config.js:配置文件(babel相关)
(7) package-lock.json:缓存性文件,曾经下载依赖的一些信息,地址等会缓存到这里(该文件可以删除)
(8) package.json:可以看作项目的身份证,里面记录了项目的各种信息:包含了哪些依赖,项目怎么运行
(9) README.md:项目说明

三、项目其他配置

让项目运行完毕后在浏览器自动打开

找到package.json文件--> "serve": "vue-cli-service serve --open"

"scripts": {
  <!-- "serve": "vue-cli-service serve --open --host localhost --port 8080" -->
    "serve": "vue-cli-service serve --open",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  }

eslint校验功能关闭

在vue.config.js文件中添加

module.exports = {
  // 关闭eslint
  lintOnSave: false
}

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

在jsconfig.配置别名@提示[@代表的是src文件夹,将来文件很多的时候,方便寻找]

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

四、项目路由分析 vue-router

前端路由:KV键值对
key:URL(地址栏路径)
value:相应的路由组件

路由组件和非路由组件

头部header部分  和  底部footer部分 是  非路由组件
中间center部分属于路由组件

components文件夹,用来放置非路由组件(这里放置Header、Footer组件)
pages/views文件夹,用来放置路由组件(Home,Search,Login,Register)

组件要求:
Footer组件:在Home、Search组件显示。但在Login、Register组件隐藏
实现方式1:v-if v-show (可以实现,但不是最终方案)
实现方式2:可以在路由上设置meta属性,根据组件身上的$route获取当前路由信息,通过路由路径判断Footer显示与隐藏

注意 配置路由时,可以给路由添加元信息meta,路由需要配置对象,只能写成meta:{...}的形式.不能自己起名,比如kangf:{...}

开发步骤

1.书写静态页面
2.拆分组件
3.获取服务器的数据动态展示
4.完成相应的动态业务逻辑

五、安装less依赖

npm i --save less less-loader

六、安装vuex 和 vue-router依赖注意事项

vue2 中只能使用vuex的3版本 和 vue-router@3版本

npm i vuex@3
npm i vue-router@3

七、路由的跳转

两种形式
1.声明式导航(默认push): 适用于
2.编程式导航(replace/push):this.$router.replace('/home') 功能更强大

路由传参

params参数:属于路径当中的一部分,需要注意,在配置路由的时候需要占位
query参数:不属于路径当中的一部分,类似ajax中的queryString,不需要占位 eg:/home?k=''&v=''

八、Home模块组件拆分

--1.完成静态页面
--2.拆分出静态组件
--3.获取服务器的数据进行展示
--4.动态业务

完成三级联动组件

---由于三级联动在Home、Search、Detail都有使用,所以把三级联动注册为全局组件.
这样只需注册一次,就可以多次使用

九、POSTMAN测试接口工具

--使用postman工具测试,接口是否可用
--如果服务器返回的数据code字段200,则表示成功
--整个项目,接口前缀都有/api字样

http://gmall-h5-api.atguigu.cn/api/product/getBaseCategoryList

十、axios二次封装

向服务器发送请求: 1.XMLHttpRequest、fetch、JQuery、axios

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

请求拦截器:可以在发送请求之前处理一些业务
响应拦截器:当服务器返回后,可以处理一些事情

接口当中,路径都带有 /api

baseURL:"/api"

基础不好可以去官方看git|NPM关于axios文档

十一、接口统一管理

项目很小:完全可以在组件的生命周期函数中发送请求
项目很大:axios.get(xxx')

跨域问题

什么是跨域:协议、域名、端口号不同请求,称之为跨域
前端项目本地服务器:http://localhost:8080/
后台服务器:

解决方法:JSONP、CROS、数据代理proxy
devServer代理方法vue.js官网里有详细方法,点我跳转

devServer: {
    // proxy代理服务,紧跟端口号后的字符串
    proxy: {
      // 请求前缀
      '/api': {
        target: 'http://gmall-h5-api.atguigu.cn',
        // 修改target地址接收路径,前面request.js中已经配置了baseURL: "/api",所以下面这步可以省略
        // pathRewrite: { '^/api': '' },

        // 下面两项默认为true
        // ws: true,//用于支持websocket
        // changeOrigin: true
      },
    }
  }

十二、nprogress进度条的使用

安装

npm i nprogress

引入

import nprogress from 'nprogress'//引入插件
import 'nprogress/nprogress.css'//引入样式

npropress.start()进度条开始
nprogress.done()进度条结束

十三、完成一级背景颜色

方法一:通过样式 :hover
方法二:通过JS(不推荐) :class="{ cur: currentIndex == index }"

可以用 :style="display:{currentIndex==index?"block","none"}" 实现隐藏是显示

十四、卡顿现象

卡顿:用户操作行为过快,导致浏览器解析不过来,就会出现部分事件没有触发,这就是卡顿现象.

解决方法:防抖与节流(机制:闭包+延时器)

防抖:前面的所有的触发都被取消,最后一次执行在规定的时间之后才会触发,也就是说如果连续快速的触发只会执行一次
lodash详解地址
lodash防抖语法 _.debounce(func, [wait=0], [options=])

节流:在规定的间隔时间范围内不会重复触发回调,只有大于这个时间间隔才会触发回调,把频繁触发变为少量触发
lodash节流语法 _.throttle(func, [wait=0], [options=])

lodash引入方法:

//把lodash全部功能函数引入,不推荐
// import _ from "lodash";

// 按需引入,这里只引入throttle函数,默认暴露throttle不用加{}
import throttle from "lodash/throttle";
posted @ 2022-08-26 16:36  Kangf  阅读(79)  评论(0编辑  收藏  举报