面试对象 -前端,工作经验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的作用(高频)

标识组件的唯一性
本来想升入挖掘一下的,看了许多帖子发现越解释越模糊,不过我也发现了一些优缺点:
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日