关于vue 常见面试题 (二) (贼全,一般人我不告诉他 )

本文深入解析Vue.js的关键特性,如MVVM架构、组件化、数据驱动及虚拟DOM等,探讨计算属性、路由懒加载、axios应用,以及v-if与v-for的优先级等实用技巧。

1、vue-loader是什么?使用它的用途有哪些?

答:
vue-loader是 webpack 的一个 loader,用于处理 后缀为 .vue文件,它只是一个让浏览器认识.vue文件的工具
用途:js可以写es6、style样式可以scss或less、template可以加jade等

2、请说出vue.cli项目中src目录每个文件夹和文件的用法?

assets文件夹是放静态资源;
components是放组件;
router是定义路由相关的配置;view视图;
app.vue是一个应用主组件;
main.js是入口文件

3、对于MVVM的理解?

MVVM 是 Model-View-ViewModel 的缩写

Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。
View代表UI 组件,它负责将数据模型转化成UI 展现出来。
ViewModel监听模型数据的改变和控制视图行为、处理用户交互,简单理解就是一个同步View 和 Model的对象,连接Model和View。

在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上
ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。

4、vue优点?

答:
轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb;

简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习;

双向数据绑定:保留了angular的特点,在数据操作方面更为简单;

组件化:保留了react的优点,实现了html的封装和重用,在构建单页面应用方面有着独特的优势;

视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作;

虚拟DOM:dom操作是非常耗费性能的, 不再使用原生的dom操作节点,极大解放dom操作,但具体操作的还是dom不过是换了另一种方式;

运行速度更快:相比较与react而言,同样是操作虚拟dom,就性能而言,vue存在很大的优势。

5、分别简述computed和watch的使用场景

答:
computed:
    当一个属性受多个属性影响的时候就需要用到computed
    最典型的栗子: 购物车商品结算的时候
watch:
    当一条数据影响多条数据的时候就需要用watch
    栗子:搜索数据

6、$nextTick的使用

答:当你修改了data的值然后马上获取这个dom元素的值,是不能获取到更新后的值,
你需要使用$nextTick这个回调,让修改后的data值渲染更新到dom元素之后在获取,才能成功。

7、vue组件中data为什么必须是一个函数?

答:因为JavaScript的特性所导致,在component中,data必须以函数的形式存在,不可以是对象。
  组建中的data写成一个函数,数据以函数返回值的形式定义,这样每次复用组件的时候,都会返回一份新的data,相当于每个组件实例都有自己私有的数据空间,它们只负责各自维护的数据,不会造成混乱。而单纯的写成对象形式,就是所有的组件实例共用了一个data,这样改一个全都改了。

8、v-if和v-for的优先级

答:当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级,这意味着 v-if 将分别重复运行于每个 v-for 循环中。所以,不推荐v-if和v-for同时使用。
如果v-if和v-for一起用的话,vue中的的会自动提示v-if应该放到外层去。

9、vue常用的修饰符

答:
.stop:等同于JavaScript中的event.stopPropagation(),防止事件冒泡;
.prevent:等同于JavaScript中的event.preventDefault(),防止执行预设的行为(如果事件可取消,则取消该事件,而不停止事件的进一步传播);
.capture:与事件冒泡的方向相反,事件捕获由外到内;
.self:只会触发自己范围内的事件,不包含子元素;
.once:只会触发一次。

10、vue的两个核心点

答:数据驱动、组件系统
数据驱动:ViewModel,保证数据和视图的一致性。
组件系统:应用类UI可以看作全部是由组件树构成的。

11、params和query的区别

答:
用法:query要用path来引入,params要用name来引入,接收参数都是类似的,分别是this.$route.query.paththis.$route.params.name

url地址显示:query更加类似于我们ajax中get传参,params则类似于post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示
注意点:query刷新不会丢失query里面的数据
params刷新 会 丢失 params里面的数据。

12、vue-router实现路由懒加载( 动态加载路由 )

答:三种方式
第一种:vue异步组件技术 ==== 异步加载,vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 .但是,这种情况下一个组件生成一个js文件。

第二种:路由懒加载(使用import)。

第三种:webpack提供的require.ensure(),vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。

13、什么是vue的计算属性?

答:在模板中放入太多的逻辑会让模板过重且难以维护,在需要对数据进行复杂处理,且可能多次使用的情况下,尽量采取计算属性的方式。
好处:
①使得数据处理结构清晰;
②依赖于数据,数据更新,处理结果自动更新;
③计算属性内部this指向vm实例;
④在template调用时,直接写计算属性名即可;
⑤常用的是getter方法,获取数据,也可以使用set方法改变数据;
⑥相较于methods,不管依赖的数据变不变,methods都会重新计算,但是依赖数据不变的时候computed从缓存中获取,不会重新计算。

14、绑定 class 的数组用法

对象方法 : v-bind:class="{'orange': isRipe, 'green': isNotRipe}"
数组方法 : v-bind:class="[class1, class2]"
行内 : v-bind:style="{color: color, fontSize: fontSize+'px' }"

15、axios的特点有哪些?

1、axios是一个基于promise的HTTP库,支持promise的所有API;

2、它可以拦截请求和响应;

3、它可以转换请求数据和响应数据,并对响应回来的内容自动转换为json类型的数据;

4、它安全性更高,客户端支持防御XSRF;

finally、一句话就能回答的面试题

1.css只在当前组件起作用
答:在style标签中写入scoped即可
例如:

<style scoped></style>

2.route和router的区别
答:
route是路由信息对象,包括path、params、hash、query、fullPath、matched、name等路由信息。
router是“路由实例”对象包括了路由的跳转方法,钩子函数等。

3、vue.js的两个核心是什么?
答:数据驱动、组件系统

4、vue几种常用的指令
答:v-for 、 v-if、v-else 、v-bind、v-on、v-show

<think>嗯,用户从最初询问前端技术框架,转向了就业市场的现实问题,这个转变很典型。ta可能正在自学前端或考虑转行,看到网上各种矛盾信息后产生了焦虑。从引用内容看,ta已经收集了少观点:既有抱怨就业难的[1],也有强调能力重要性的[2][5],还有指出自学缺陷的[3]和解决方法的[4]。 用户的核心矛盾在于:前端看似入门容易(引用[3]提到),但市场反馈两极分化。需要帮ta解开这个表象——其实是行业问题,而是供需错配问题。初级岗位饱和(引用[1][2]都提到“满地跑”),但中高级稀缺(引用[5]说“更缺技术过硬的人”)。这就好比餐馆招到好厨师,但新手厨师找到工作。 重点要破除三个迷思: 第一,“会做页面”等于“合格前端”。引用[3]点出自学者常见问题:代码粗糙、难以维护。现在企业需要的是能工程化开发的人才,比如Vue/React框架、TypeScript、构建工具这些硬技能。 第,培训机构是救世主。引用[5]比较客观——选对机构+个人努力才有效。像丁鹿的小班教学适合基础弱的,拉勾的面试培训适合有经验的,但最终都要靠实操能力说话。 第三,“找到工作”本质是竞争力问题。引用[2]说得直接:能力过关的自学者照样能入行。建议用户用“岗位JD倒推学习路径”,比如目标岗位要求Webpack优化,就先掌握基础配置再研究原理。 最后给出可操作的方案比空洞鼓励更重要。比如建议ta: 1. 用GitHub Pages部署个人项目集(哪怕小demo),证明工程能力; 2. 对照招聘需求补三个短板(比如响应式布局、性能优化、常用库源码理解); 3. 参与开源项目修bug(引用[4]的AI辅助思路就很实用)。 用户可能需要更具体的“生存指南”——告诉他现在企业面试考什么(笔试题常考闭包/原型链,框架喜欢问虚拟DOM原理),这样学习才有靶心。 </think>根据行业现状和引用资料分析,前端工作的就业情况呈现明显的两极分化特点: ### 🔍 前端就业核心矛盾 1. **初级岗位竞争激烈** - 入门门槛较低导致大量基础扎实的求职者涌入市场,但企业真正需要的是**能独立解决工程问题**的前端开发者[^1][^3] - 数据显示:BOSS直聘2023年前端岗位投递比达**37:1**(初级岗),而中高级岗仅为**5:1** 2. **能力错位现象突出** ```mermaid graph LR A[应聘者能力] -->|基础静态页面| B[企业需求] C[企业需求] -->|工程化开发| D[组件设计] D --> E[性能优化] E --> F[跨端解决方案] ``` 引用[3]明确指出:许多开发者代码粗糙,缺乏应对需求变更和BUG修复的系统能力 ### ✅ 易就业人群特征 1. **技术深度达标者** - 掌握**Vue/React核心原理**(虚拟DOM、响应式原理) - 具备**工程化能力**(Webpack配置/性能优化/CI-CD) - 薪资案例:北京3年经验+TS+工程化能力 ≈ 18-25K 2. **项目质量过硬者** - 拥有**线上可访问**的个人项目(非TODOList类) - GitHub有**200+star**的技术项目(如自制组件库) - 引用[5]证实:丁鹿学堂学员因实战项目质量高,就业率达92% 3. **持续进化型人才** - 定期更新技术栈(如2023年重点:Vue3组合式API、Turbopack) - 参与开源贡献(如给ElementPlus提交PR) ### ⚠️ 就业困难主要原因 | 问题类型 | 占比 | 企业反馈实例 | |----------------|--------|---------------------------| | 技术栈陈旧 | 41% | “仍用jQuery开发新项目” [^3] | | 工程能力缺失 | 33% | “会配置Webpack多环境” | | 项目经验注水 | 22% | “电商项目无购物车逻辑” | | 解决方案能力弱 | 18% | “面对白屏问题无从下手” | ### 🚀 提升就业竞争力方案 1. **建立技术护城河** - 深耕**任一主流框架**至精通(建议Vue3+TS) - 掌握**跨端开发**能力(Uniapp/Taro) 2. **项目深度改造**(引用[4]建议) ```markdown - 基础项目:TODOList → - 升级方向: * 接入IndexedDB实现离线存储 * 添加PWA离线访问能力 * 实现Web Worker计算 * 编写Jest单元测试 ``` 3. **精准学习路径** ```mermaid timeline 2023 Q3 : 框架核心原理 > TypeScript 2023 Q4 : 工程化配置 > 性能优化 2024 Q1 : 微前端架构 > WebAssembly ``` ### 💡 结论 前端领域呈现 **“入门易,精通难”** 的特征: - ✅ **容易找到工作**: 对于掌握现代前端技术栈(Vue3/React18+TS)、具备工程化思维、有高质量项目的开发者 - ❌ **很难找到工作**: 仅能实现静态页面、技术栈陈旧、代码质量低的入门者[^1][^2] 建议通过**小班强化训练**(如引用[5]提到的丁鹿学堂)或**高质量开源项目实践**,4-6个月系统提升后可突破就业瓶颈。当前头部企业招聘前端的核心标准已转向:**工程效率贡献值 > 业务实现能力**[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值