前端常见基础面试题-vue篇-3

2024-06-13 364 0

1.说说什么是MVVM?

这MWM是Model-View-ViewModel的缩写。MWVM是一种设计思想。Model层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View代表UI组件,它负责将数据模型转化成UI展现出来,View是一个同步View和Model的对象
在MWM架构下,View和Model之间并没有直接的联系,而是通过ViewModel进行交互,Model和ViewModel之间的交互是双向的,因此View数据的变化会同步到Model中,而Model数据的变化也会立即反应到View上。
对ViewModel通过双向数据绑定把View层和Model层连接了起来,而View和Model之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作
DOM,不需要关注数据状态的同步问题,复杂的数据状态维护完全由MVNM来统一管理。

2.说mwwm和mvc区别?它和其它框架(jquery)的区别是什么?

这mvc和mvm其实区别并不大。都是一种设计思想。主要就是mvc中Controller演变成mvvm中的ViewModel。mvvm主要解决了mvc中大量的DOM操作使页面渲染性能降低,加载速度变慢,影响用户体验。
区别:vue数据驱动,通过数据来显示视图层而不是节点操作。
场景:数据操作比较多的场景,更加便捷。

3.vue的优点是什么?

·低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
·可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑。
·独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
·可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

4.用于构建vue的vue-cli工程都到了哪些技术,其作用分别是什么?

·vue.js:vue-cli工程的核心,主要特点是双向数据绑定和组件系统
·vue-router:vue官方推荐使用的路由框架
·vuex:专为vue.js应用项目开发的状态管理器,主要用于维护vue组件间共用的一些变量和方法
·axios(fetch、ajax):用于发起GET、POST等http请求,基于Promise设计
·webpack:模块加载和vue-cli工程打包器
·eslint代码规范工具。

5.用vue-cli工程常用的npm命令有哪些?

·npm install下载node_modules资源包的命令
·npm run dev启动vue-cli开发环境的npm命令
·npm run build vue-cli生成生产环境部署资源的npm命令
·npm run build--report用于查看vue-cli生产环境部署资源文件大小的npm命令

6.请说出vue-cli工程中每个文件夹和文件的用处?

build文件夹是保存一些webpack的初始化配置。
config文件夹保存一些项目初始化的配置
node_modules是npm加载的项目依赖的模块
·src目录是我们要开发的目录:
assets用来放置图片components用来放组件文件app.vue是项目入口文件
main.js项目的核心文件

7.请你详细介绍一些packagejso里面的配置?

{
"name": "demo",
 "version": "1.0.0",
"description": "这里是介绍",
 "main": "index.js",
 "scripts": {
 "build": "webpack --config webpack.config.js",
 "sync": "gulp sync",
 "syncbuild": "gulp sync && webpack --config webpack.config.js"
 },
 "author": "will",
 "license": "ISC",
 "dependencies": {
 "react": "16.*"
 },
 "devDependencies": {
 "babel-core": "^6.26.0",
 "eslint": "^4.10.0",
 }
 }

version标注了当前项目的版本号,如果是私有项目,不发布到仓库(repository),此项关键字可以不用变更
main我们模块或者是项目的入口文件,且只有一个文件,文件的路径是相对项目的根目录

license是标注我们项目的许可证权限,如果是开源项目·重点关键字说明
scripts是npm提供给我们运行shell命令的入口

dependencies我是项目运行时必要依赖 devDependencies是项目开发时所需依赖

8.为什么说vue是一个渐进式框架?

原首先我们需要理解什么是框架。在最初的前端开发中,为了完成一些功能,我们需要通过原生js获取html中的DOM节点,随后插入内容或添加事件,进行一系列操作。但是,一般需求的业务逻辑都是比较复杂的,这对原生js处理起来就很吃力,代码的可维护性也就随时间慢慢降低。这个时候我们需要把视图(View)、数据(Model)、逻辑控制(VM)分离。这就是MWM模式的雏形。
形在核心库的基础上,vue现在已经有了一套完整的生态系统,我们可以添加Vuex,可以添加vue-router,可以添加任何你想添加的第三方库,这些都是互相独立的。可以说vue是轻量型的,是渐进型的
·Vue与React、Angular的不同是,但它是渐进的:
☆你可以在原有大系统的上面,把一两个组件改用它实现,当jQuery用也可以整个用它全家桶开发,当Angular用可以用它的视图,搭配你自己设计的整个下层用
可以在底层数据逻辑的地方用00和设计模式的那套理念也可以函数式,都可以,它只是个轻量视图而已,只做了最核心的东西

9.请问v-if和v-show有什么区别?

共同点:都是动态显示DOM元素
·区别点:
手段
■ v-if是动态的向DOM树内添加或者删除DOM元素
■ v-show是通过设置DOM元素的display样式属性控制显隐
编译过程
■ v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件
■ v-show只是简单的基于css切换

■ v-if是惰性的,如果初始条件为假,则什么也不做;只有在条件第一次变为真时才开始局部编译(编译被缓存?编译被缓存后,然后再切换的时候进行局部卸载)态的
■ v-show是在任何条件下(首次条件是否为真)都被编译,然后被缓存,而且DOM元素保留
性能消耗
v-if有更高的切换消耗
■ v-show有更高的初始渲染消耗
使用场景
v-if适合运营条件不大可能改变
■ v-show适合频繁切换

编译条件

■ v-if是惰性的,如果初始条件为假,则什么也不做;只有在条件第一次变为真时才开始局部编译(编译被缓存?编译被缓存后,然后再切换的时候进行局部卸载)态的
■ v-show是在任何条件下(首次条件是否为真)都被编译,然后被缓存,而且DOM元素保留
性能消耗
v-if有更高的切换消耗
■ v-show有更高的初始渲染消耗
使用场景
v-if适合运营条件不大可能改变
■ v-show适合频繁切换

10. vue 常用的修饰符?

V-model修饰符:
.lazy:输入框改变,这个数据就会改变,这个修饰符会在光标离开input框才会更新数据

<input type="text" v-model.lazy="value">

.number:营先输入数字就会限制输入只能是数字,先字符串就相当于没有加number,注意,不是输入框不能输入字符串,是这个数据是数字

<input type="text" v-model.number="value">

trim:输入框过滤首尾的空格

<input type="text" v-model.trim="value">

·事件修饰符:
.stop:阻止事件冒泡,相当于调用了event.stopPropagation()方法

<button @click.stop="test"></button>

.prevent:阻止默认行为,相当于调用了event.preventDefault()方法,比如表单的提交、a标签的跳转就是默认事件

<a href="" @click.prevent="test"></a>

self:只有元素本身触发时才触发方法,就是只有点击元素本身才会触发。比如一个div里面有个按钮,div和按钮都有事件,我们点击按钮,div绑定的方法也会触发,如果div的click加上self,只有点击到div的时候才会触发,变相的算是阻止冒泡

<div @click.stop="test"></div>

.once:事件只能用一次,无论点击几次,执行一次之后都不会再执行

<div @click.once="test"></div>

.capture:事件的完整机制是捕获-目标-冒泡,事件触发是目标往外冒泡 .sync:对 prop 进行双向绑定 keyCode:监听按键的指令,具体可以查看 vue 的键码对应表

11. vue key 值的作用?

key 值:用于 管理可复用的元素。因为 Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。这么做使 Vue 变得非常快,但是这样也不总是符合实际需求

12. vue 事件中如何使用 event 对象?

获取事件对象,方法参数传递 $event 。注意在事件中要使用 $ 符号

<button @click="Event($event)">事件对象</button>
这篇文章对你有帮助吗?
[评价次数: 1 满意度: 5]

相关文章

网站服务器迁移流程
Navicat Premium 15 永久破解激活工具及安装教程
前端常见基础面试题-vue篇-2
前端常见基础面试题-vue篇-1
如何选择合适的前端入门教程
git的最全使用方法

发布评论