前端面试题统计-持续更新中
面试对象 -前端,工作经验1-2年,有一定java基础,主要考察 vue、JavaScript、typescript、nodejs。
1.谈谈你对前端模块化的理解。
答案:1.什么是模块化、其优点是什么。
模块化是指将代码中 复用性高 的逻辑功能代码封装成一个单独的模块,需要使用时将各个模块组合起来。
这么做提高了代码的可读性,而模块的按需加载提高了程序的加载速度。补充 nodejs环境支持模块化,每一个文件都是一个自定义模块每个模块都有自己的作用域,直接的避免了很多的变量污染。
2.vue中loader的作用是什么。
用来解析和转换.vue文件
,提取出每个语言块(答到这里即可),有必要的情况下会分别把他们交给对应的loader去处理,它还能够在.vue文件中添加额外的自定义块来实现项目的特殊需求
3.require 和 import 的区别
调用位置不同
,require是运行时调用(理论来说位置不限),而 import 是编译时调用,所以必须放在文件开头
本质上也不同
,require 是一个 赋值 过程 - 所以module.exports后面的内容是什么,require的结果就是什么,而import是一个解构过程
遵循的规范不同
,require 是 AMD 规范引入方式 ,mport是 ES6 的一个语法标准,如果要兼容浏览器的话必须转化成 ES5 的语法
4.vue打包之后的js文件有哪些
app.js
- 放的是项目中各个页面的逻辑代码,将格式进行了压缩
chunk-vendors.js
- 通过import包导入的第三方依赖包
.js.map
- 资源便利信息文件,存储资源文件转换后的代码的每一个位置,所对应的转换前的位置
其他.js文件
- 使用路由懒加载打包后的文件
5.for中key的作用(高频)
标识组件的唯一性
本来想升入挖掘一下的,看了许多帖子发现越解释越模糊,不过我也发现了一些优缺点:
6.vue中的¥nextTick什么时候使用
$nextTick() 作用: 是将回调函数延迟在下一次dom更新数据后调用 ,简单来说 当数据更新了,在dom中渲染后,自动执行该函数
更改数据后当你想立即使用js操作新的视图的时候
(面试时就记这一点即可)
Vue生命周期的created()钩子函数进行的DOM操作一定要放在Vue.nextTick()的回调函数中
在使用某个第三方插件时 ,希望在vue生成的某些dom动态发生变化时重新应用该插件
7.v-if 与 v-show 的区别(高频)
v-if - 从dom渲染阶段直接判断结果为false 则不会渲染该元素、v-show - dom会正常渲染,在逻辑处理阶段通过display进行隐藏
-- 更新于2023年1月29日