VUE day_05(7.21)外部css、路由系统、路由的机制、路由两种传参方式三种接参方式、编程式跳转

复习

1.组件: 组成页面的零件, 模块化开发的具体表现

  • 把一个完整的大型页面, 按照业务逻辑 拆分成不同的小模块
  • 分别开发 最后整合在一起
  • components: 专门存放组件的文件夹
  • 组件命名规范: 大驼峰 并 推荐至少两个单词 (防止与系统HTML标签重名)
  • 推荐(多数开发者的习惯): 组件的根div 添加class, 名字是 组件名的蛇形命名法
  • 传参: 需要使用 选项: props 来声明参数

2.生命周期: 基础知识 面试必考

(1)数据/函数的初始化

  • beforeCreate
  • created : 面试题常问: 在这个周期能操作DOM吗? 不能---此位置可以发请求, 略微提前 但是 要承担 极小概率 DOM初始化失败的风险. 一旦失败 就属于浪费流量

(2)DOM元素的初始化

  • beforeMount
  • mounted : 此处可以开始操作DOM--推荐在这里发送请求

(3)DOM元素的更新

  • beforeUpdate
  • updated

(4)组件销毁

  • beforeDestroy
  • destroyed

3.监听器: watch

可以监听任意属性的变化

4.插槽: slot

用于做布局, 在组件的某个位置添加占位符. 使用时会替换成具体的内容

5.全局axios

在main.js中, 把axios 注入到 vue的原型里

方式有两种:

简单粗暴: Vue.prototype.axios = axios 使用时没有提示

优雅: 使用 vue-axios 模块进行. 使用时有提示

6.外部css:

(1)scss:

JS中用import引入, 就是全局

style中

  • @import url(): 忽略 scoped 局部 属性, 全局引入
  • @import: 受scoped属性影响. 写scoped就是局部, 不写scoped就是全局

(2)css

JS中用import引入, 就是全局

一、外部css

二、路由系统

路由: 路径 的 由来

  • 具体来说: 一个名称 对应一个地址. 例如 小明家 --- 成都xx区xx街道xx小区...
  • 项目中: 地址栏的路径 对应的 组件是什么

项目的分类:

  • 页项目: 一个网站由多个 html 文件组成, 一个html就是一个页面
  • 页项目: 1个网站只有1个html文件. 模块化的表现: 切换页面上局部的组件 来实现页面内容的变化
  • 专业称呼: SPA: Single Page Application 单页应用

三、路由的机制

一般使用的超链接跳转: 会导致页面刷新 - 不能用
路由提供的, 专门负责跳转的组件 router-link 特点是不会刷新页面

1.先检查你的项目是否已安装路由模块
看 main.js 的 new Vue里, 有没有 router
没有则要重新生成项目包, 选项中需要勾选router

 2.router-view: 是路由模块提供的占位符组件
此组件会自动检测 浏览器的地址栏中的路径, 通过路径到配置文件中找到对应的组件进行展示 

在App.vue里放占位符,替换路由的内容,才能展示出来

路由系统切换的组件要存储到views目录

和组件是两个体系,不需要遵守命名规范

3.书写组件

4.在router里的index.js里(路由配置文件),写以下内容:

 path是给路由的名字,在地址栏接后面的名字 就可以查找到

component 可以找到对应的组件

5.通过地址栏展示

 整个流程如图所示:

 加载路由的方式有两种:

  1. 先写import引入,然后再使用
  2. 懒加载:书写箭头函数,在调用时临时引入组件

假如一个网页有20个页面,其中5个网页用户经常访问的比如首页、详情页、搜索页你,就可以使用预加载:提前引入,用户访问时就可以直接查看(速度快、体验好);有15个页面访问不频繁的,例如用户信息、广告等,初始不加载,用户访问时再临时加载,可以避免网站刚进入时,加载过多数据导致的卡顿问题(属于首页优化方案)

懒加载

 用vroute-name,一般直接书写vr,系统会提示,回车就能弹出整个的加载结构,只需要将相关的东西填进去就可以,name不常用。

 

发送方式

超链接跳转: 会导致页面刷新 - 不能用   <a href="/">首页</a>

路由提供的, 专门负责跳转的组件 router-link  特点: 不会刷新页面,它的表现形式就是a标签,但不是普通的超链接跳转,书写方式要注意:不管还有没有引入组件,一定要写 to=" " ,不然会报错 。

 除此之外,router-link有自带的激活样式,可以直接使用,作者把激活样式分为两种,模糊匹配和精确匹配。

模糊匹配:此样式属于模糊匹配成功时具备的,假设路径是 /paopao  -> 先 / 再 /paopao,会匹配到 / 和 /paopao

精确匹配:精准匹配到你单击的那一个

四、路由传参

路由传参 和 组件传参 相同的概念, 做法有所差异

第一种写法:问号传参
标准的url传参语法: 路径?参数=值&参数=值

 直接用问号传参,需要传递的参数写在路径后面

 

 第二种写法:冒号传参

要在路径中声明参数,在index.js中,找到配置的路由文件,在路由后面声明

 在router-link后的地址写上实参

 读取参数

 

五、props

在配置中开启props接参功能

就可以直接在组件页中使用配置项props接收参数了,加上前面问号传参的query和冒号传参的params,一共就有三种接收参数的方法,相比前面两种,此种方法更简便一些也更常用。

 六、编程式跳转

点击查看$router,可以看一下它的原型

$router: 就是 路由对象本身, 具有所有操作路由的方法,里面有一个push方法;
路由的push方法: 可以推入新的路径 -- 和数组毫无关系

在方法/函数里添加push方法就可通过点击实现跳转

 但是需要注意的是,如果重复跳转相同的路径,就会出现报错,解决的办法就是在跳转之前,判断一下:

 七、斗鱼练习

 1.配置好脚手架和项目包后,安装axios并全局注入main.js,推荐使用优雅方法

 2.使用router-link配置主页

要考虑参数的获取,以便通过点击事件修改地址,在index.js允许props取参,到组件页douyu.vue配置props需要的参数,在主页App.vue的router-link里的to里写实参。

获取请求拿到数据,用v-for遍历到html上,重点在于路径的拼接和要刷新/打开页面就能拿到第一个页面的效果

  编程式跳转的写法 this.$router.push(``),里面的路劲,就是我们要跳转的路径,是数据项中,数组里序号为0的,用结构语法结构出来获取到序号为0的元素,把这些元素拼接成路径,再跳转。位置要写在获取数据的代码后面,因为是一打开页面就要触发的。

3.配置组件页

将获取到的数据放到页面上,就是一些基本操作了,需要注意的点就只是请求的路径需要拼接一下,点击操作重新请求需要通过监听器进行操作。

猜你喜欢

转载自blog.csdn.net/m0_70328115/article/details/125953199