复习
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.通过地址栏展示
整个流程如图所示:
加载路由的方式有两种:
- 先写import引入,然后再使用
- 懒加载:书写箭头函数,在调用时临时引入组件
假如一个网页有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.配置组件页
将获取到的数据放到页面上,就是一些基本操作了,需要注意的点就只是请求的路径需要拼接一下,点击操作重新请求需要通过监听器进行操作。