前端面试题(带答案).docx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《前端面试题(带答案).docx》由用户(最好的沉淀)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 前端 试题 答案
- 资源描述:
-
1、前端试题(带答案)前端试题(带答案)vue什么是vue命周期?答: Vue命周期是指vue实例对象从创建之初到销毁的过程,vue所有功能的实现都是围绕其命周期进的,在命周期的不同阶 段调对应的钩函数可以实现组件数据管理和DOM渲染两重要功能。vue命周期的作是什么?答:它的命周期中有多个事件钩,让我们在控制整个Vue实例的过程时更容易形成好的逻辑 vue的命周期的个钩函数? beforeCreat() 创建前 在new个vue实例后,只有些默认的命周期钩和默认事件,其他的东西都还没创建。在此命周期执的时候,data和methods中的数据都还没有初始化。不能在这个阶段使data中的数据和met
2、hods中的法 created()被创建 data 和 methods都已经被初始化好了,可以调了 beforeMount() 挂载前 在内存中已经编译好了模板了,但是还没有挂载到页中,此时,页还是旧的 mounted()已挂载 Vue实例已经初始化完成了。此时组件脱离了创建阶段,进到了运阶段。 如果我们想要通过插件操作页上的DOM节点,最早可以在和这个阶段中进 beforeupdate()更新前 页中的显的数据还是旧的,data中的数据是更新后的, 页还没有和最新的数据保持同步 updated()更新 页显的数据和data中的数据已经保持同步了,都是最新的 beforeDestroy() 销
3、毁前 Vue实例从运阶段进到了销毁阶段,这个时候上所有的 data 和 methods , 指令, 过滤器 都是处于可状态。还没有真正被销毁 destroyed()被销毁 这个时候上所有的 data 和 methods , 指令, 过滤器 都是处于不可状态。组件已经被销毁了。第次页加载会触发哪个钩?答: 第次页加载时会触发 beforeCreate, created, beforeMount, mounted 这个钩. 简述每个周期具体适合哪些场景?答:beforecreate : 可以在这加个loading事件,在加载实例时触发created : 初始化完成时的事件写在这,如在这结束load
4、ing事件,异步请求也适宜在这调mounted : 挂载元素,获取到DOM节点updated : 如果对数据统处理,在这写上相应函数beforeDestroy : 可以做个确认停事件的确认框nextTick : 更新数据后即操作domcreated和mounted的区别?答:created:在模板渲染成html前调,即通常初始化某些属性值,然后再渲染成视图。mounted:在模板渲染成html后调,通常是初始化页完成后,再对html的dom节点进些需要的操作。DOM渲染在哪个周期中已经完成? 答:mountedVue路由mvvm框架是什么?mvvm即Model-View-ViewModel,m
5、vvm的设计原理是基于mvc的MVVM是Model-View-ViewModel的缩写,Model代表数据模型负责业务逻辑和数据封装,View代表UI组件负责界和显,ViewModel监听模型数据的改变和控制视图为,处理户交互,简单来说就是通过双向数据绑定把View层和Model层连接起 来。在MVVM架构下,View和Model没有直接联系,是通过ViewModel进交互,我们只关注业务逻辑,不需要动操作DOM, 不需要关注View和Model的同步作vue-router是什么?有哪些组件? Vue Router 是 Vue.js 官的路由管理器。它和 Vue.js 的核深度集成,让构建单页
6、应变得易如反掌。 和和3. active-class 是哪个组件的属性?active-class是router-link终端属性,来做选中样式的切换,当router-link标签被点击时将会应这个样式4 怎么定义vue-router的动态路由?怎么获取传过来的值?动态路由的创建,主要是使path属性过程中,使动态路径参数,以冒号开头,如下:path: /details/:idname: Details components: Details访问details录下的所有件,如果details/a,details/b等,都会映射到Details组件上。当匹配到/details下的路由时,参数值会被
7、设置到this.route.params下,所以通过这个属性可以获取动态参数console.log(this. route.params.id)5. vue-router有哪种导航钩? 全局前置守卫const router = new VueRouter() router.beforeEach(to, from, next) = / to do somethings)to:Route,代表要进的标,它是个路由对象。from:Route,代表当前正要离开的路由,也是个路由对象next:Function,必须需要调的法,具体的执效果则依赖next法调的参数next():进管道中的下个钩,如果全部的
8、钩执完了,则导航的状态就是comfirmed(确认的) next(false):终端当前的导航。如浏览器URL改变,那么URL会充值到from路由对应的地址。next(/)|next(path:/):跳转到个不同的地址。当前导航终端,执新的导航。next 法必须调,否则钩函数法resolved 全局后置钩router.afterEach(to, from) = / to do somethings)后置钩并没有next函数,也不会改变导航本。 路由独享钩beforEnterconst router = new VueRouter( routes: path: /home, component:
9、 Home,beforeEnter: (to, from, next) = / to do somethings/ 参数与全局守卫参数样)组件内导航钩const Home = template: div/div ,beforeRouteEnter(to, from, next)/ 在渲染该组件的对应路由被 confirm 前调/ 不能获取组件实例 this,因为当守卫执前,组件实例还没被创建,beforeRouteUpdate(to, from, next)/ 在当前路由改变,但是该组件被复时调/ 例:对于个动态参数的路径 /home/:id,在/home/1 和 /home/2 之间跳转的时
10、候/ 由于会渲染同样的 Home 组件,因此组件实例会被复,这个钩就会在这个情况下被调。/ 可以访问组件实例 this,beforeRouteLeave(to, from, next)/ 导航离开该组件的对应路由时调/ 可以访问组件实例 thisbeforeRouterEnter不能访问this,因为守卫在导航确认前被调,因此新组建还没有被创建,可以通过传个回调给 next 来访问组件实例。在导航被确认的时候执回调,并把实例作为回调的法参数。const Home = template: div/div ,beforeRouteEnter(to, from, next) next( vm = /
11、 通过 vm 访问组件实例)$route和 $router的区别是什么?router为VueRouter的实例,是个全局路由对象,包含了路由跳转的法、钩函数等。route 是路由信息对象|跳转的路由对象,每个路由都会有个route对象,是个局部对象,包含path,params,hash,query,fullPath,matched,name等路由信息参数。vue-router响应路由参数的变化 watch 检测/ 监听当前路由发变化的时候执watch: $route(to, from) console.log(to.path)/ 对路由变化做出响应 组件内导航钩函数beforeRouteUpd
12、ate(to, from, next)/ to do somethingsvue-router响应路由参数的变化 watch 检测/ 监听当前路由发变化的时候执watch: $route(to, from) console.log(to.path)/ 对路由变化做出响应 组件内导航钩函数beforeRouteUpdate(to, from, next)/ to do somethingsvue-router的两种模式 hasho 原理是onhashchage事件,可以在window对象上监听这个事件window.onhashchange = function(event) console.lo
13、g(event.oldURL, event.newURL)let hash = location.hash.slice(1) historyo 利了HTML5 History Interface 中新增的pushState()和replaceState()法。o 需要后台配置持。如果刷新时,服务器没有响应响应的资源,会刷出404,vue-router实现路由懒加载(动态加载路由) 把不同路由对应的组件分割成不同的代码块,然后当路由被访问时才加载对应的组件即为路由的懒加载,可以加快项的加载速 度,提效率const router = new VueRouter( routes: path: /ho
14、me, name: Home,component:() = import(/views/home)Vue常见试题1. vue 的优点?vue的优势:轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运速度快。2. vue组件向组件传递数据?组件向组件出传递数据,使定义事件的式。组件向组件传递数据,使props属性的式。3. vue组件向组件传值?v-if和v-show的相同点和不同点? 1、相同点:v-show 和 v-if 都能控制元素的显和隐藏。2、不同点:2.1实现本质法不同v-show 本质就是通过设置 css 中的 display 设置为 none,控制隐藏v
15、-if 是动态的向 DOM 树内添加或者删除 DOM 元素2.2)编译的区别v-show 其实就是在控制 css v-if 切换有个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和组件2.4)性能较v-show 只编译次,后其实就是控制 css, v-if 不停的销毁和创建,故 v-show 性能更好。4、总结(适场景):如果要频繁切换某节点时,使 v-show(论 true 或者 false 初始都会进渲染,此后通过 css 来控制显隐藏,因此切换开销较,初始开销较),如果不需要频繁切换某节点时,使 v-if(因为懒加载,初始为 false 时,不会渲染,但是因为它是通过添加
16、和删除 dom 元素来控制显和隐藏的,因此初始渲染开销较,切换开销较)如何让css只在当前组件中起作?当前组件写成 的作是什么? 包裹动态组件时,会缓存不活动的组件实例,主要于保留组件状态或避免重新渲染。话: 如有个列表和个详情,那么户就会经常执打开详情=返回列表=打开详情这样的话列表和详情都是个频率很的页,那么就可以对列表组件使 进缓存,这样户每次返回列表的时候,都能从缓存中快速渲染,不是重新渲染vue如何获取并操作DOM元素法:直接给相应的元素加id,然后再document.getElementById(“id”);获取,然后设置相应属性或样式;法:使ref,给相应的元素加ref=“nam
17、e” 然后再this.$refs.name获取到该元素,并且可以直接调组件中定义的法;说出种vue当中的指令和它的法? 1、v-if:判断是否隐藏2、v-for:数据循环3、v-bind:class:绑定个属性4、v-model:实现数据双向绑定5、v-if v-show6、v-once 7、v-html: 8、v-cloak:vue-loader是什么?使它的途有哪些?vue-loader会解析件,提取出每个语块,如果有必要会通过其他loader处理,最后将他们组装成个commonjs模块; module.exports出个vue.js组件对象V-for 为什么必须使key?增加Key可以标
18、识组件的唯性,key的作主要是为了效的更新虚拟DOMaxios的基本概念及安装配置法?ajax:异步请求,是种需再重新加载整个页的情况下,能够更新部分页的技术axios:于浏览器和node.js的基于promise的HTTP客户端1.从浏览器制作XMLHttpRequests 2.让HTTP从node.js的请求3.持promise api 4.拦截请求和响应5. 转换请求和响应数据6. 取消请求7. 动转换成json数据8.客户端持防xsrf axios的安装:cmd命令进到vue项下,执npm install axios 然后执提npm install -save axios vue-ax
19、ios 配置法:打开vue的编辑器,找到当前项的main.js件,输: import axios from axiosVue.prototype.axios = axios 这时候还不能跨域请求,在config下的index.js输:proxyTable: /api: /使/api来代替http:/f.apiplus.c target: http:/127.0.0.1:5000/, /源地址changeOrigin: true, /改变源 ,允许跨域pathRewrite: /api: /路径重写12. axios解决跨域问题(vue-cli3)? vue中v-model的应及使详解?v-mo
20、del于表单数据的双向绑定Scss的安装和使?请说出vue.cli项中src录每个件夹和件的法?assets件夹是放静态资源;components是放组件;router是定义路由相关的配置;view视图;app.vue是个应主组件; main.js是件vue中computed和watch的区别,以及适场景? computed:通过属性计算得来的属性1、computed内部的函数在调时不加()。2、computed是依赖vm中data的属性变化变化的,也就是说,当data中的属性发改变的时候,当前函数才会执,data中的属性没有改变的时候,当前函数不会执。3、computed中的函数必须retu
21、rn返回。4、在computed中不要对data中的属性进赋值操作。如果对data中的属性进赋值操作了,就是data中的属性发改变,从触发computed中的函数,形成死循环了。5、当computed中的函数所依赖的属性没有发改变,那么调当前函数的时候会从缓存中读取。 使场景:当个值受多个属性影响的时候购物车商品结算watch:属性监听1、watch中的函数名称必须要和data中的属性名致,因为watch是依赖data中的属性,当data中的属性发改变的时候,watch中的函数就会执。2、watch中的函数有两个参数,前者是newVal,后者是oldVal。 3、watch中的函数是不需要调的
展开阅读全文