vue阶段小实训第一周面试题
Posted 神的少女光芒万丈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue阶段小实训第一周面试题相关的知识,希望对你有一定的参考价值。
1.vuex是什么?
介绍:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。
理解:核心就是 store(仓库),仓库是用来干什么的?你就当它用来储存东西的。
2.什么是vuex的状态管理?
state,驱动应用的数据源;
view,以声明方式将 state 映射到视图;
actions,响应在 view上的用户输入导致的状态变化。
3.什么是耦合?什么是内聚?
耦合:模块与模块之间很多事存在关联的,如果改动一个,其他若干模块也会发生改变,模块之间的关系越是紧密,独立性就越不好,这种关系我们称为耦合。
内聚:模块内部的代码,互相之间的练习越强,内聚就越高。
4.观察者模式和订阅者模式分别是什么?
data里面的title可以理解为被观察者或者说发布者,template 里面使用的title可以理解为观察者或者订阅者,
本文以观察者和被观察者为例。
观察者模式又被称作为发布订阅者模式,定义了一对多的依赖关系,
5.路由传参的方式?
路由传参分为query和parames
1.使用query传参的时候,name,path都可以引入,但使用params传参的时候只能使用name进行引入。
2.接收参数的时候使用this.$ route.params.name或者this.$ route.query.name
3.进行路由跳转的时候,我们使用this.$ router.push(‘路径’)
4.如果index.js配置路由时,我们能看到,params的参数是URL不可或缺的一部分,但是query的参数是拼接起来的,没有也不影响
6.什么是同步,什么是异步?
7.vue是什么?
1. Vue 是什么 ?
主流的渐进式 javascript 框架
2. 什么是渐进式?
可以和传统的网站开发架构融合在一起,例如可以简单的把它当作一个类似 JQuery 库来使用。
也可以使用Vue全家桶框架来开发大型的单页面应用程序 。
3.使用它的原因 ?
vue.js 体积小,编码简洁优雅,运行效率高,用户体验好.
无Dom操作,它能提高网站应用程序的开发效率
4. 什么场景下使用它?
一般是需要开发单页面应用程序 (Single Page
Application, 简称:SPA) 的时候去用 单页面应用程序,如:网易云音乐 https://music.163.com/ 因为
Vue 是 渐进式 的,Vue 其实可以融入到不同的项目中,即插即用
vue是搭建用户页面的渐进式框架
8.页面元素的隐藏方式有几种和各自的特点?
第一种:display属性为none,效果:元素不显示,不占位
就是说元素设置了display:none;属性时,元素不会再占用页面的位置,之前占用的位置会被其他元素占用。会导致页面重新排序。
第二种:设置css visibility属性为hidden,效果:元素不显示,但占位
当元素设置看visibility:hidden;属性时,虽然能隐藏元素,但是元素仍然占位,页面不会再重新排序 第三种:设置元素透明度opacity属性为0,也可以隐藏元素,占位
这个方法和visibility类似,会隐藏元素但是会占位
9.什么是回调地狱?
就是函数作为参数层层嵌套 怎么解决:通过promise链式调用的方式
10.什么是slot?有哪些类型的slot?
插槽
具名插槽 匿名插槽 作用域插槽
11.什么是生命周期,生命周期有什么?
Vue 实例从创建到销毁的过程,就是生命周期。
从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程,称之为 Vue 的生命周期。
1. beforeCreate : 创建Vue实例前的时候执行,
2. created : 创建Vue实例完成后执行,
3. beforeMount :Vue实例开始渲染前执行,
4. mounted : Vue实例渲染完成后执行,
5. beforeUpdate : Vue实例修改前执行,
6. updated : Vue实例修改完成后执行,
7. beforeDestroy : Vue开始消亡前执行,
8. destroyed : Vue实例消亡后执行,
9. activated :组件激活时调用。该钩子在服务器端渲染期间不被调用。
10.deactivated : 组件停用时调用。该钩子在服务器端渲染期间不被调用。
11.errorCaptured :当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。此钩子可以返回 false 以阻止该错误继续向上传播。
12.组件间的传值方式?
1. 父传子 props
2. 子传父 $emit
3. 兄弟间传值通过创建一个新的实例
4. $parent
5. $children
6. $ref
13.什么是npm?
简单来说,NPM(Node Package Manager)是包含在Node.js里面的一个包管理工具,NPM会随着Node.js一起安装。NPM为开发者提供了一个代码模块共享的大平台,当我们项目中需要使用某个模块(JavaScript包)时,可以直接使用NPM包管理工具来下载对应的包并安装,我们也可以把自己用Node.js写的代码发布到平台上供他人使用。
14.什么是生产环境?什么是开发环境、
简单来说,就是在项目的开发阶段就是开发环境;项目上线了,开始正式提供对外服务,上线后的阶段就是生产环境。在生产环境下,一般会关掉错误报告,打开错误日志等操作。
devDependencies配置的是开发环境,安装项目开发时所依赖的模块。比如像webpack工具,只是用来构建项目和打包,
这些都是在开发阶段才使用的,等项目上线后就用不到webpack工具了,那么我们就可以把webpack安装到开发环境中
dependencies配置的是生产环境,安装项目运行时所依赖的模块。比如jQuery库,等项目上线以后依然是要继续使用的,
我们就要安装在生产环境中,如果没有把需要的依赖安装到生产环境中,项目上线运行时就有可能会报错。使用 --save 命令安装到
15.package.json里面存放什么?
搭建一个前端项目之前,通常会在项目的根目录下生成一个名为package.json的文件作为NPM包的描述文件,使用该文件来定义项目信息、
配置包依赖关系。package.json文件可以自己手动创建文件中包含了NPM包的基本信息(项目名称、版本号、项目描述、作者)和依赖管理
16.说你下你对单页面应用的理解,以及单页面的优缺点?
SPA的英文是single-page application ,也就是说整个项目中只有一个页面。
单页面应用的实现思路: 就是在 Web 页面初始化时加载所有的 html、JavaScript 和 CSS,页面的内容的变化,靠动态操作DOM。
它的优点有三点:
第一点:局部刷新。用户体验好、快,内容的改变不需要重新加载整个页面。
第二点:服务器的压力小。基于上面一点,SPA 对服务器的压力小;减少了不必要的跳转和重复渲染,这样减少了对服务器的压力
第三点:前后端职责分离。架构清晰,前端进行交互逻辑,后端负责数据处理;
它的缺点也有三点:
第一点:初次加载耗时多。为实现单页 Web 应用功能及显示效果,需要在加载页面的时候将 JavaScript、CSS 统一加载,部分页面按需加载;
第二点:前进后退路由管理问题。由于单页应用在一个页面中显示所有的内容,所以不能使用浏览器的前进后退功能,所有的页面切换需要自己建立堆栈管理(这是vue-router做的);
第三点:SEO 难度较大。由于所有的内容都在一个页面中动态替换显示,所以在 SEO 上其有着天然的弱势
17.说一下你对vuex生命周期的理解?
vuex是一个专为vue.js应用程序开发的状态管理模式(它采用集中式存贮管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化)。
vuex五大核心属性?
1.state:存储数据,存储状态;在根实例中注册了store 后,在组件中是用 this.$store.state.变量名 来访问存放在vuex里面德数据;对应vue里面的data;存放数据方式为响应式,vue组件从store中读取数据,如数据发生变化,组件也会对应的更新。
2.getter:可以认为是 store 的计算属性,它的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。(在组件中使用:this.$store.getters.变量名)
3.mutation:更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。在组件中使用:this.$store.commit()
4.action:包含任意异步操作,通过提交 mutation 间接更变状态。在组件中使用:this.$store.dispatch()
5.module:将 store 分割成模块,每个模块都具有state、mutation、action、getter、甚至是嵌套子模块。
18.为什么data要是一个函数?
当data是个函数的时候,每个实例都会有自己的作用域,他们都会独立,不会互相影响。如果data是个对象的时候,在多次使用这个实例的时候,修改一个值,那么其他的值也会发生变化,这样就就会造成数据共享,不利于我们功能的实现。
19.v-for中key的作用?
vue组件高度复用,绑定key可以标识组件的唯一性,为了更好的区分各个组件,key的作用主要是为了高效的更新虚拟DOM,保持数据唯一。
如不绑定key在以后的操作中不仅代码会报错 ,也会浪费浏览器性能
20.如何获取DOM元素?有几种方式?
1.通过ID获取(getElementById)
2.通过name属性(getElementsByName)
3.通过标签名(getElementsByTagName)
4.通过类名(getElementsByClassName)
5.获取html的方法(document.documentElement)
6.获取body的方法(document.body)
7.通过ref的方法 设置ref='name' this.$refs
21.请谈一下你对 使用原生js开发和 使用vue开发的看法。(至少20字以上)
Vue的核心代码也是js 就是开发了自己的框架,只不过vue使用的是MVVM操作,解放了DOM操作
原生js DOM操作频繁,代码繁杂 DOM操作与逻辑代码混合,可维护性差 不同功能区域书写在一起,可维护性低 模块之间的依赖关系复杂 vue
数据驱动视图 组件化开发
什么是数据驱动视图?
数据的变化会自动更新到对应的元素中,不用手动操作DOM。
以上是关于vue阶段小实训第一周面试题的主要内容,如果未能解决你的问题,请参考以下文章