2020 web前端面试题及答案大全 (7)

兄弟组件传参:(通过EventBus事件总线实现)

// 1\. 新建eventBus.jsimport Vue from \'vue\'export default new Vue// 或直接在main.js中初始化EventBus(全局)Vue.prototype.$EventBus = new Vue() // 2\. 发射与接收// 如果是定义在eventBus.js中import eventBus from \'eventBus.js\'eventBus.$emit()eventBus.$on() // 如果是定义在main.js中this.bus.$emit()this.bus.$on() // 3\. 移除监听eventBus.$off()

5.vue自定义组件

可以使用独立可复用的自定义组件来构成大型应用, 采用帕斯卡命名法或横线连接, 通过以上方式进行组件间通信. 每一个组件都是Vue实例, 可以使用生命周期钩子.

6. vue自定义指令

除核心指令之外的指令, 使用directive进行注册.

指令自定义钩子函数: bind, inserted, update, componentUpdated, unbind

7.vuex组成和原理

组成: 组件间通信, 通过store实现全局存取

修改: 唯一途径, 通过commit一个mutations(同步)或dispatch一个actions(异步)

简写: 引入mapState、mapGetters、mapActions

8.vue-router的原理,例如hashhistory和History interface这些东西要弄明白。其实看一下源码就好了,看不懂可以直接看解析的相关技术博客。

vue-router用法:
在router.js或者某一个路由分发页面配置path, name, component对应关系

每个按钮一个value, 在watch功能中使用this.$router.push实现对应跳转, 类似react的this.history.push

或直接用router-link to去跳转, 类似react的link to

vue-router原理: 通过hash和History interface两种方式实现前端路由

HashHistory: 利用URL中的hash(“#”);replace()方法与push()方法不同之处在于,它并不是将新路由添加到浏览器访问历史的栈顶,而是替换掉当前的路由

History interface: 是浏览器历史记录栈提供的接口,通过back(), forward(), go()等方法,我们可以读取浏览器历史记录栈的信息,进行各种跳转操作. pushState(), replaceState() 这下不仅是读取了,还可以对浏览器历史记录栈进行修改

9.vue的seo问题

seo关系到网站排名, vue搭建spa做前后端分离不好做seo, 可通过其他方法解决:

SSR服务端渲染: 将同一个组件渲染为服务器端的 HTML 字符串.利于seo且更快.

vue-meta-info, nuxt, prerender-spa-plugin页面预渲染等

10.预渲染和ssr
以上

11.生命周期内create和mounted的区别

created: 在模板渲染成html前调用,即通常初始化某些数据,然后再渲染成视图。

mounted: 在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作和方法。

12.监听watch

对应一个对象,键是观察表达式,值是对应回调。值也可以是methods的方法名,或者是对象,包含选项。在实例化时为每个键调用 $watch()

13.登录验证拦截(通过router)

先设置requireAuth:

routes = [ { name: \'detail\', path: \'/detail\', meta: { requireAuth: true } }, { name: \'login\', path: \'/login\' }]

再配置router.beforeEach:

router.beforeEach((from, to, next) => { if (to.meta.requireAuth) { // 判断跳转的路由是否需要登录 if (store.state.token) { // vuex.state判断token是否存在 next() // 已登录 } else { next({ path: \'/login\', query: {redirect: to.fullPath} // 将跳转的路由path作为参数,登录成功后跳转到该路由 }) } } else { next() }})

14. v-for key值

不写key值会报warning, 和react的array渲染类似. 根据diff算法, 修改数组后, 写key值会复用, 不写会重新生成, 造成性能浪费或某些不必要的错误

15. vue3.0的更新和defineProperty优化

放弃 Object.defineProperty ,使用更快的原生 Proxy (访问对象拦截器, 也成代理器)

提速, 降低内存使用, Tree-shaking更友好

支持IE11等

使用Typescript

15. vue使用this获取变量

正常要通过vm.[图片上传失败...(image-6d2f4e-1570591304185)]

root传参取值

16. jQuery的优缺点,与vue的不同,vue的优缺点?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwfxg.html