首页 > 技术文章 > Vue 面试题 2021-01-10

kangshuo 2021-01-10 22:47 原文

MVVM模式的理解

MVVM是Model-View-ModelView的缩写

模型-视图-视图模型。

【模型】指的是后端传递的数据。

【视图】指的是所看到的页面。

【视图模型】mvvm模式的核心,它是连接view和model的桥梁。

它有两个方向:

一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。

二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。

实现的方式是:DOM 事件监听。这两个方向都实现的,我们称之为数据的双向绑定

总结:在MVVM的框架下视图和模型是不能直接通信的。它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。并且MVVM中的View 和 ViewModel可以互相通信。

                                                                      

为什么会有MVVM框架

数据和视图更密切的关联

组件 父传子  子传父的数据传递

例子 当我们切换页面时  每个页面的数据不同  需要进行分类  ,这时候可以加提炼公共的方法,写成一个子组件  

通过父组件把数据传递给子组件  子组件获取之后可以进行调用数据 进行分类  把符合自己定义的条件的数据分好类在从子组件传输给父组件

 

路由实现原理

通过 改变URL,在不重新请求页面的情况下

 

路由:hash和history

hash:地址栏中的从#开始到的到结尾的值

hash的特点:虽然会出现在URL地址中,但是不会被包括在Http请求中,对后端完全没有影响,因此改变hash不会重新加载页面

例子:http://160.238.86.82:8003/ #/index

history :history 中新增的pushState()和replaceState()

pushState()方法用于历史中添加一条记录

replaceState()方法用来修改history对象的当前记录

history 模式,去除了#,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。

 

vue与react和angular的区别

vue.js更轻量,压缩后大小20kb

vue吸收两家之长,借用了angular的指令和react的组件化

                      

 

keep-alive 是Vue内置的一个组件,用来缓存组件,避免多次加载相应的组件,减少性能消耗

使用场景需要频繁切换路由,这个时候可以考虑keep-alive

 

 

vue.cli项目中src目录每个文件夹和文件的用法?
答:assets文件夹是放静态资源;components是放组件;router是定义路由相关的配置; app.vue是一个应用主组件;main.js是入口文件。

 

推荐阅读