vue基础总结

1.vue的好处:响应式编程 组件化开发
1)优势:轻量级框架 简单易学 数据双向绑定
2.MVVM的定义
MVC是Model-View- Controller的简写。即模型-视图-控制器。
M和V指的意思和MVVM中的M和V意思一样。
C即Controller指的是页面业务逻辑。
使用MVC的目的就是将M和V的代码分离。‘MVC是单向通信。
也就是View跟Model,必须通过Controller来承上启下。
MVC和MVVM的区别并不是VM完全取代了C,ViewModel存在目的在于抽离Controller中展示的业务逻辑,
而不是替代Controller,其它视图操作业务等还是应该放在Controller中实现。
也就是说MVVM实现的是业务逻辑组件的重用
在vue中:Model:指的是js中的数据,如对象,数组等等。View:指的是页面视图viewModel:指的是vue实例化对象
3.vue中有哪些钩子函数,作用是什么
1)初始化前 --BeforeCreated
2)初始化完成 —***:发送ajax --created //比较常用
3)双向数据绑定前 —BeforeMount
4)双向数据绑定完成 --Mounted
5)更新前 --BeforeUpdate
6)更新完成–updated
7)销毁前–BeforeDestroyed
8)销毁完成–Destroyed
4.vue中数据渲染的时候如何保证原样输出
1)v-text:将数据输出到元素内部,如果有html代码,会作为普通文本输出
2)v-html:将数据输出到元素内部,如果有html代码,会被渲染
3){{}}插值表达式,可以直接获取Vue实例中定义的数据或函数
使用插值表达式的时候,值可能闪烁;而使用v-html、v-text不会闪烁,有值就显示,没值就隐藏
5.vue中methods和computed有什么区别?应用场景如何
1)1.methods:方法,函数,绑定事件调用;不会使用缓存
2)computed: 计算属性 本质是方法,使用时可以像属性一样使用,当操作的值没有发生改变时,会使用缓存,当值发生改变,才会改变;提高速度
6.vue中如何处理原生的DOM事件
通过v-on,简写@的方式定义事件 @click、@mouseover、@mouseout、@change、@keyup、@keydown…
并绑定函数
7.vue中如何组织冒泡事件
事件.stop,例如:@click.stop="" ,@mouseover.stop=""
8.vue中父子组件如何通信
1)父向子通信:props
2)子向父传值:无法直接传值,只能通过子类调用父类的方法,使用方法的参数传值
在子组件的方法中通过 . e m i t ( " o u t s h o w " , n u m ) 传 值 , 第 一 个 参 数 是 父 组 件 中 的 方 法 名 , 第 二 个 参 数 是 父 组 件 中 该 方 法 的 参 数 补 充 : 组 件 中 的 兄 弟 组 件 如 何 通 信 : 1 ) 兄 弟 组 件 数 据 通 讯 除 了 借 助 共 同 的 父 组 件 做 为 通 讯 桥 梁 之 外 , 还 可 以 通 过 e v e n t B u s 来 让 兄 弟 之 间 组 件 进 行 数 据 通 讯 ∗ ∗ 9. v u e 中 有 哪 些 指 令 ∗ ∗ v − i f v − e l s e v − f o r v − t e x t v − h t m l v − m o d e l v − o n 简 写 @ v − b i n d 简 写 : ∗ ∗ 10. t h i s . .emit("outshow",num)传值,第一个参数是父组件中的方法名,第二个参数是父组件中该方法的参数 补充:组件中的兄弟组件如何通信: 1)兄弟组件数据通讯除了借助共同的父组件做为通讯桥梁之外,还可以通过eventBus来让兄弟之间组件进行数据通讯 **9.vue中有哪些指令** v-if v-else v-for v-text v-html v-model v-on 简写@ v-bind 简写: **10.this. .emit("outshow",num)1eventBus9.vuevifvelsevforvtextvhtmlvmodelvon@vbind:10.this.router与this. r o u t e 的 区 别 ∗ ∗ 1 ) t h i s . route的区别** 1)this. route1this.route:当前活跃的路由
2)this. r o u t e r : V u e R o u t e r 的 实 例 ∗ ∗ 11. a x i o s 解 决 跨 域 问 题 ∗ ∗ 1 ) a x i o s 封 装 的 实 例 中 配 置 b a s e U R L 为 请 求 的 a p i 的 公 共 部 分 2 ) v u e 3.0 在 v u e . c o n f i g . j s 中 配 置 p r o x y 配 置 ∗ ∗ 12. v u e x + l o c a l S t o r a g e 保 存 t o k e n ∗ ∗ 1 ) t o k e n 发 生 变 化 , 修 改 s t a t e 中 的 值 , 保 存 到 l o c a l S t o r a g e 中 ∗ ∗ 13. v − s h o w 与 v − i f 的 区 别 ∗ ∗ 1 ) 共 同 点 : 都 能 控 制 元 素 的 显 示 和 隐 藏 。 2 ) 不 同 点 : 实 现 本 质 ⽅ 法 不 同 , v − s h o w 本 质 就 是 通 过 控 制 c s s 中 的 d i s p l a y 设 置 为 n o n e , 控 制 隐 藏 , 只 会 编 译 ⼀ 次 ; v − i f 是 动 态 的 向 D O M 树 内 添 加 或 者 删 除 D O M 元 素 , 若 初 始 值 为 f a l s e , 就 不 会 编 译 了 。 ⽽ 且 v − i f 不 停 的 销 毁 和 创 建 ⽐ 较 消 耗 性 能 。 3 ) 总 结 : 如 果 要 频 繁 切 换 某 节 点 , 使 ⽤ v − s h o w ( 切 换 开 销 ⽐ 较 ⼩ , 初 始 开 销 较 ⼤ ) 。 如 果 不 需 要 频 繁 切 换 某 节 点 使 ⽤ v − i f ( 初 始 渲 染 开 销 较 ⼩ , 切 换 开 销 ⽐ 较 ⼤ ) ∗ ∗ 14. v − i f 与 v − f o r 的 优 先 级 ∗ ∗ v − f o r 的 优 先 级 高 于 v − i f ∗ ∗ 15. v u e 的 生 命 周 期 ∗ ∗ ∗ ∗ 16. c r e a t e d 与 m o u n t e d 的 区 别 ∗ ∗ 1 ) 在 c r e a t e d 阶 段 , 对 浏 览 器 来 说 , 渲 染 整 个 H T M L 文 档 时 , d o m 节 点 、 c s s 规 则 树 与 j s 文 件 被 解 析 后 , 但 是 没 有 进 入 被 浏 览 器 r e n d e r 过 程 , 上 述 资 源 是 尚 未 挂 载 在 页 面 上 , 也 就 是 在 v u e 生 命 周 期 中 对 应 的 c r e a t e d 阶 段 , 实 例 已 经 被 初 始 化 , 但 是 还 没 有 挂 载 至 router:VueRouter的实例 **11.axios解决跨域问题** 1)axios封装的实例中配置baseURL为请求的api的公共部分 2)vue3.0 在vue.config.js中配置proxy配置 **12.vuex+localStorage保存token** 1)token发生变化,修改state中的值,保存到localStorage中 **13.v-show与v-if的区别** 1)共同点:都能控制元素的显示和隐藏。 2)不同点:实现本质⽅法不同,v-show本质就是通过控制css中的display设置为none,控制隐藏,只会编译⼀次; v-if是动态的向DOM树内添加或者删除DOM元素,若初始值为false,就不会编译了。⽽且v-if不停的销毁和创建⽐较消耗性能。 3)总结:如果要频繁切换某节点,使⽤v-show(切换开销⽐较⼩,初始开销较⼤)。如果不需要频繁切换某节点使⽤v-if(初始渲染开销较⼩,切换开销⽐较⼤) **14.v-if 与 v-for的优先级** v-for的优先级高于v-if **15.vue的生命周期** **16.created与mounted的区别** 1)在created阶段,对浏览器来说,渲染整个HTML文档时,dom节点、css规则树与js文件被解析后,但是没有进入被浏览器render过程,上述资源是尚未挂载在页面上, 也就是在vue生命周期中对应的created阶段,实例已经被初始化,但是还没有挂载至 router:VueRouter11.axios1axiosbaseURLapi2vue3.0vue.config.jsproxy12.vuex+localStoragetoken1tokenstatelocalStorage13.vshowvif12vshowcssdisplaynonevifDOMDOMfalsevif3使vshow()使vif14.vifvforvforvif15.vue16.createdmounted1createdHTML,domcssjsrendervuecreatedel上,所以我们无法获取到对应的节点,但是此时我们是可以获取到vue中data与methods中的数据的
2)在mounted阶段,对浏览器来说,已经完成了dom与css规则树的render,并完成对render tree进行了布局,而浏览器收到这一指令,调用渲染器的paint()在屏幕上显示,
而对于vue来说,在mounted阶段,vue的template成功挂载在$el中,此时一个完整的页面已经能够显示在浏览器中,
所以在这个阶段,即可以调用节点了。
17.为什么使用key
1)当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用 “就地复用” 策略。如果数据项的顺序被改变,Vue将不是移动 DOM 元素来匹配数据项的顺序,
而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。
2)这个默认的模式是有效的,但是只适用于不依赖子组件状态或临时 DOM 状态(例如:表单输入值)的列表渲染输出。
为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。理想的 key 值是每项都有唯一 id
18.watched在属性首次赋值的时候是否可以监听
首次进入就需要监听,使用immediate:true来实现;监控复杂数据类型,需要用到深度监听deep: true。
19.computed与watched的区别
1)计算属性computed :
1. 支持缓存,只有依赖数据发生改变,才会重新进行计算
2. 不支持异步,当computed内有异步操作时无效,无法监听数据的变化
3.computed 属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中声明过或者父组件传递的props中的数据通过计算得到的值
4. 如果一个属性是由其他属性计算而来的,这个属性依赖其他属性,是一个多对一或者一对一,一般用computed
5.如果computed属性属性值是函数,那么默认会走get方法;函数的返回值就是属性的属性值;在computed中的,属性都有一个get和一个set方法,当数据变化时,调用set方法
2)侦听属性watch:
1. 不支持缓存,数据变,直接会触发相应的操作;
2.watch支持异步;
3.监听的函数接收两个参数,第一个参数是最新的值;第二个参数是输入之前的值;
4. 当一个属性发生变化时,需要执行对应的操作;一对多;
5. 监听数据必须是data中声明过或者父组件传递过来的props中的数据,当数据变化时,触发其他操作,函数有两个参数,
   immediate:组件加载立即触发回调函数执行,
   deep: 深度监听,为了发现对象内部值的变化,复杂类型的数据时使用,例如数组中的对象内容的改变,注意监听数组的变动不需要这么做。
注意:deep无法监听到数组的变动和对象的新增,参考vue数组变异,只有以响应式的方式触发才会被监听到。
20.组件中data为什么是函数类型
1)组件中的data写成一个函数,数据以函数返回值形式定义,这样每用一次组件,就会返回一份新的data,
相当于给每个组件都分配了独立的数据空间,每个组件都有自己数据,不互相受影响。
2)如果不是数组组件,那数据就是公用的,如果有一个组件改变了数据,那就会引起所有的组件的数据进行改变
21.promise的构造方法是同步执行的还是异步执行的,then是同步执行的还是异步执行的
promise构造函数是同步执行的,then方法本身是同步执行,then方法中的内容加入微任务异步执行。
22.router中history与hash的区别
1)hash 模式下,仅 hash 符号之前的内容会被包含在请求中,如 http://www.abc.com,因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误
2)history 模式下,前端的 URL 必须和实际向后端发起请求的 URL 一致,如 http://www.abc.com/book/id 如果后端缺少对 /book/id 的路由处理,将返回 404 错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值