VUE 前台 - 学习笔记 Day 2

VUE 前台 - 学习笔记 Day 2

Day 2

1 编程式路由跳转到当前路由(参数不变),多次执行会抛出 NavigationDuplicated的警告错误?

-- 路由跳转有两种形式:声明式导航、编程式导航

-- 声明式导航没有这类问题,因为 vue-router底层已经处理好了

(1)为什么编程式导航进行路由跳转的时候,就有这种警告错误呢?

“vue-router”:“^3.5.3”: 最新的 vue-router 引入 promise 

(2)通过给 push 方法传递相应的成功、失败的回调函数,可以捕获到当前错误,可以解决。

(3)通过底部的代码,可以实现解决错误,这种写法在 push | replace 中依然还是会出现

(4)this:当前组件实例(search) , this.$router 属性:当前的这个属性,属性值 VueRouter 类的一个实例,但在入口文件注册路由的时候,给组件实例添加 $router | $route 属性 , push: VueRouter 类的一个实例


index.js

// 先把 VueRouter原型对象的puss , 先保存一份
let originPush = VueRouter.prototype.push;
let originReplace = VueRouter.prototype.replace;

// 重写push | replace
// 第一个参数:告诉原来 push 方法,你往哪里跳转(传递哪些参数)
// 第二个参数:成功的回调
// 第三个参数:失败的回调
VueRouter.prototype.push = function (location, resolve, reject) {
if (resolve && reject) {
// call || apply 区别
// 相同点,都可以调用函数一次,都可以篡改函数的上下文一次
// 不同点:call 与 apply 传递参数: call 传递参数用逗号隔开, apply 方法执行,传递数组
originPush.call(this, location, resolve, reject);
} else {
originPush.call(this, location, () => {}, () => {});
}
}

VueRouter.prototype.replace = function (location, resolve, reject) {
if (resolve && reject) {
originReplace.call(this, location, resolve, reject);
} else {
originReplace.call(this, location, () => {}, () => {});
}
}


2 Home 模块组件拆分

-- 先把静态页面完成

-- 拆分出静态组件

-- 获取服务器数据展示

-- 动态业务


3 三级联动组件完成

-- 由于三级联动,在 Home ,Search 、 Detail 、把三级联动注册为全局组件。

好处:只需要注册一次,就可以在项目任意地方使用


4 完成其余静态组件

HTML + CSS + 图片资源  -- 信息【结构、样式、图片资源】


5 Postman 测试接口

-- 刚刚经过 postman 工具测试,接口是没有问题的

-- 如果服务器返回的数据 code 字段 200,代表服务器返回数据成功

-- 整个项目,接口前缀都有 /api 字样


6 axios 二次封装

XMLHttpRequest、fetch、JQ、axios

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

请求拦截器、响应拦截器:请求拦截器,可以在发请求之前处理一些业务、相应拦截器、但服务器数据返回以后,可以处理一些事情。

安装 axios

npm install -- save axios

(2)在项目中经常API 文件夹【axios】

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

baseURL:"/api"

(3)其他方法可以参考axios相关文档


7 接口统一管理

项目很小:完全可以在组件的生命周期函数中发请求

项目大: axios.get('xxx')

(1)跨域问题

什么是跨域:协议、域名、端口号不同请求,称之为跨域


http://localhost:8080/#/home  -- 前端项目本地服务器

http://39.98.123.211       -- 后台服务器

JSONP 、 CROS 、代理


8 nprogress 进度条的使用

安装

npm install --save nprogress

start:进度条开始

done:进度条结束

进度条颜色可修改


9 vuex 状态管理库

(1)vuex 是什么?

vuex 是官方提供一个插件,状态管理库,集中式管理项目中组件共用的数据。

切记,并不是全部项目都需要 Vuex,如果项目很小,完全不需要Vuex,如果项目很大,组件很多,数据很多,数据维护很费劲,Vuex 仓库存储数据。

state 仓库存储数据的地方

mutations

actions

getters

modules


安装命令,版本过高不兼容

npm install --save vue@3.6.2


(2)Vuex基本使用


(3)Vuex 实现模块是开发

如果项目过大,组件过多,接口也很多,数据也很多,可以让Vuex进行模块式开发

模拟state 存储数据
{
    count:1,
    search:{a:1},
    detail:{sss},
    pay:{}
}















回复列表


回复操作