# qianduan36_day7 **Repository Path**: js-class/qianduan36_day7 ## Basic Information - **Project Name**: qianduan36_day7 - **Description**: aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbccccccccccccccccccc - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-26 - **Last Updated**: 2022-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # code7 1. 三个阶段 挂载 更新 销毁 2. 挂载阶段 - beforeCreate vue 创建一个空的实例 数据、方法都没有准备好 - created 数据 方法准备好了 但是视图还没有准备好 我们可以在这个时候发送 ajax - beforeMount vue 实例已经通过$el 找到视图,但是还没同步 编译已经做完了 - mounted 数据和视图同步了 我们在这个时候可以操作 DOM 3. 更新阶段 - beforeUpdate 数据是新的,但是我们拿到的视图还是旧的 - updated 数据和视图重新同步了 4. 销毁阶段 - beforeDestroy 在这个时候 vue 身上的数据方法 computed 全部还在,我们在这个时候可以清理一些定时器之类 - destroyed ajax 可以放在 created 也可以放在 mounted 我们如何才能在 created 中操作 DOM ---> 把操作 DOM 的代码放在 this.$nextTick 里面 11 个钩子函数 vue3 -> vue-router4 vue2 -> vue-router3 路由 本质:有了它之后,我们可以实现在浏览器地址栏输入不同的地址,回车一下可以看到不同的页面内容 我们前端后面学的框架(vue,react)这些都是用来做单页面应用程序(single page application 简称 spa) 多页面应用程序 我们传统的网页都是多页面应用程序 项目里面有一堆的 html 文件 缺点 多个页面头尾还侧边栏基本上是一样的,浪费流量 空白 路由 有了路由之后可以实现切换 在浏览器地址栏输入不同的 url,能得到不同的内容 (映射) 单页应用程序 只有一个 html 页面 切换是假的,是通过修改局部来实现切换 多页面应用程序切换是考虑的多个页面的切换 单页应用程序切换是靠的多个组件的切换 学习如何去使用路由(我们这个在学 vue 第一天的时候 只需要手写一次 后面就不用自己手写了) 在 vue 项目中的组件按功能分有两种: 1. 页面组件 - 页面展示 - 配合路由用 views 目录 2. 公共组件 - 展示数据/常用于复用 components 目录 登录 注册 这些属性页面组件 轮播\按钮组件 公共组件 切换:得有二个组件才能切换 路由组件和之前学的组件不一样 1. 安装 vue-router@3 2. 创建一个 views 目录 3. 创建 2 个页面组件 (MyLogin.vue MyInfo.vue) yarn add vue-router@3 spa : 单页应用程序 就是一个 html 页面 配置路由的步骤 1. 要在 App.vue 中准备一个占位符内置组件 router-view 2. 准备二个以上的页面级组件 3. 打开 router/index.js 配置 routes 路由规则数组 4. 为了让用户操作方便 vue 提供了一个新的内置组件 router-link (to 属性指定去哪里) , 也可以不用 router-link,可以用编程式导航 this.$router.push('path') 写的时候注意事项 1. 不用写#号,但是写的时候是以/开头的 2. 重定向 redirect 3. \*号 404 路由 router 这个是 new 出来的 路由实例对象 只有一个 可以实现路由规则之间的切换 导航仪 可以实现路线的切换 router.push route 指的是当前这个路由规则 有一堆 具体的哪一条路线 可以获取当前这一条路线上的参数 router.query.id 嵌套路由 父子路由 :把两个页面组件一样的 UI 代码放在一级路由 二级路由只放不一样的地方 实现公共的 UI 代码复用 初始化阶段 beforeCreate created beforeMount mounted 更新阶段 beforeUpdate updated 销毁 beforeDestroy destroyed 当组件配合 keep-alive 作缓存的时候,created beforeDestroy 就用不了,所以 keep-alive 又为我们提供了二个新的钩子 activated 激活钩子 deactivated 失活钩子 未激活钩子 什么是 vue:渐进式 mvvm 的框架 vue 的核心特点:数据驱动(数据响应式) 组件化 mvvm 1. mvvm 是由三个单词组成的 m(model) + v(view) + vm(viewmodel) 2. model 就是数据一般来自本地存储或 ajax view 就是视图就是 template 中的 html 代码 viewmodel 就是 vue 实例本身 3. 我们 mvvm 的特点就是不像以前写代码把代码写在一起,而是把代码分成三大块,其中 vm 这块不用程序员写,这个是框架本身在做的 4. vm 是一个桥梁,沟通 v 和 m,实现了 v 和 m 的分离,好处:代码好维护 开发效率高 5. mvvm 最大的特点就是不用操作 DOM 数据驱动 vue 脚手架 1. 安装方式 npm i @vue/cli -g (全局尽量不要用 yarn) 2. 它就是 webpack 封装 3. 我们之前 webpack 配置文件在 webpack.config.js,我们现在变了配置文件在 vue.config.js 项目打开方式 1. 项目名字尽量和变量的名字一样的,不能是中文的 不能有空格 2. vscode 只能打开一个项目 运行 vue 项目 1. 先看根目录有没有 node_modules,如果没有,就执行 yarn 2. 如果有,就直接运行 vue serve (在 package.json 中找一个 scripts) .vue 组件规范 1. template 必须有一个根标签 2. 这个组件代码不能是空的,必须有内容的 3. css 这块有一个 scoped 如果不加,当前写的样式会影响其他组件,加了之后只会对当前组件有效果 (原理:利用的是属性选择器)