【Vue面试题一】、说说你对 Vue 的理解

news2024/10/6 22:19:52

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。

面试官:有使用过vue吗?说说你对vue的理解

在这里插入图片描述

一、从历史说起

Web是World Wide Web的简称,中文译为万维网我们可以将它规划成如下的几个时代来进行理解

  • 石器时代
  • 文明时代
  • 工业革命时代
  • 百花齐放时代

石器时代

石器时代指的就是我们的静态网页,可以欣赏一下1997的Apple官网
在这里插入图片描述

最早的网页是没有数据库的,可以理解成就是一张可以在网络上浏览的报纸,直到CGI技术的出现通过 CGI Perl 运行一小段代码与数据库或文件系统进行交互,如当时的Google(1998年)

在这里插入图片描述

文明时代

ASP,JSP大家应该都不会太陌生,最早出现于 2005 年左右,先后出现了微软的 ASP 和 Java Server Pages [JSP] 等技术,取代了 CGI ,增强了 WEB 与服务端的交互的安全性,类似于下面这样,其实就是Java + HTML

<%@ page language="java" contentType="text/html; charset=utf-8"     pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head>   <meta charset="utf-8">   <title>JSP demo</title> </head> <body>   <img src="http://localhost:8080/web05_session/1.jpg" width=200 height=100 /> </body> </html>

JSP有一个很大的缺点,就是不太灵活,因为JSP是在服务器端执行的,通常返回该客户端的就是一个HTML文本。我们每次的请求:获取的数据、内容的加载,都是服务器为我们返回渲染完成之后的 DOM,这也就使得我们开发网站的灵活度大打折扣在这种情况下,同年:Ajax火了(小细节,这里为什么说火了,因为 Ajax 技术并不是 2005 年出现的,他的雏形是 1999 年),现在看来很常见的技术手段,在当时可是珍贵无比

工业革命时代

到这里大家就更熟悉了,移动设备的普及,Jquery的出现,以及SPA(Single Page Application 单页面应用)的雏形,Backbone EmberJS AngularJS 这样一批前端框架随之出现,但当时SPA的路不好走,例如SEO问题,SPA 过多的页面、复杂场景下 View 的绑定等,都没有很好的处理经过这几年的飞速发展,节约了开发人员大量的精力、降低了开发者和开发过程的门槛,极大提升了开发效率和迭代速度,我们可以称之其为工业时代

百花齐放时代

这里没有文字,放一张图感受一下
在这里插入图片描述
PS:这里为什么要说这么多Web的历史,我们可以看到Web技术的变化之大与快,每一种新的技术出现都是一些特定场景的解决方案,那我们今天的主角Vue又是为了解决什么呢?我们接着往下看

二、vue是什么

Vue.js(/vjuː/,或简称为Vue)是一个用于创建用户界面的开源JavaScript框架,也是一个创建单页应用的Web应用框架。2016年一项针对JavaScript的调查表明,Vue有着89%的开发者满意度。在GitHub上,该项目平均每天能收获95颗星,为Github有史以来星标数第3多的项目同时也是一款流行的JavaScript前端框架,旨在更好地组织与简化Web开发。Vue所关注的核心是MVC模式中的视图层,同时,它也能方便地获取数据更新,并通过组件内部特定的方法实现视图与模型的交互PS: Vue作者尤雨溪是在为AngularJS工作之后开发出了这一框架。他声称自己的思路是提取Angular中为自己所喜欢的部分,构建出一款相当轻量的框架最早发布于2014年2月

三、Vue核心特性

数据驱动(MVVM)

MVVM表示的是 Model-View-ViewModel

Model:模型层,负责处理业务逻辑以及和服务器端进行交互
View:视图层:负责将数据模型转化为UI展示出来,可以简单的理解为HTML页面
ViewModel:视图模型层,用来连接Model和View,是Model和View之间的通信桥梁
这时候需要一张直观的关系图,如下
在这里插入图片描述

组件化

1.什么是组件化一句话来说就是把图形、非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式,在Vue中每一个.vue文件都可以视为一个组件

2.组件化的优势

  • 降低整个系统的耦合度,在保持接口不变的情况下,我们可以替换不同的组件快速完成需求,例如输入框,可以替换为日历、时间、范围等组件作具体的实现
  • 调试方便,由于整个系统是通过组件组合起来的,在出现问题的时候,可以用排除法直接移除组件,或者根据报错的组件快速定位问题,之所以能够快速定位,是因为每个组件之间低耦合,职责单一,所以逻辑会比分析整个系统要简单
  • 提高可维护性,由于每个组件的职责单一,并且组件在系统中是被复用的,所以对代码进行优化可获得系统的整体升级

指令系统
解释:指令 (Directives) 是带有 v- 前缀的特殊属性作用:当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM

  • 常用的指令
    • 条件渲染指令 v-if
    • 列表渲染指令v-for
    • 属性绑定指令v-bind
    • 事件绑定指令v-on
    • 双向数据绑定指令v-model

没有指令之前我们是怎么做的?是不是先要获取到DOM然后在…干点啥

四、Vue跟传统开发的区别

没有落地使用场景的革命不是好革命,就以一个高频的应用场景来示意吧注册账号这个需求大家应该很熟悉了,如下
在这里插入图片描述
用jquery来实现大概的思路就是选择流程dom对象,点击按钮隐藏当前活动流程dom对象,显示下一流程dom对象如下图(代码就不上了,上了就篇文章就没了…)

在这里插入图片描述
用vue来实现,我们知道vue基本不操作dom节点, 双向绑定使dom节点跟视图绑定后,通过修改变量的值控制dom节点的各类属性。所以其实现思路为:视图层使用一变量控制dom节点显示与否,点击按钮则改变该变量,如下图
在这里插入图片描述
总结就是:

  • Vue所有的界面事件,都是只去操作数据的,Jquery操作DOM
  • Vue所有界面的变动,都是根据数据自动绑定出来的,Jquery操作DOM

五、Vue和React对比

  • 相同点
    • 都有组件化思想
    • 都支持服务器端渲染
    • 都有Virtual DOM(虚拟dom)
    • 数据驱动视图
    • 都有支持native的方案:Vue的weex、React的React native
    • 都有自己的构建工具:Vue的vue-cli、React的Create React App
  • 区别
    • 数据流向的不同。react从诞生开始就推崇单向数据流,而Vue是双向数据流
    • 数据变化的实现原理不同。react使用的是不可变数据,而Vue使用的是可变的数据
    • 组件化通信的不同。react中我们通过使用回调函数来进行通信的,而Vue中子组件向父组件传递消息有两种方式:事件和回调函数
    • diff算法不同。react主要使用diff队列保存需要更新哪些DOM,得到patch树,再统一操作批量更新DOM。Vue 使用双向指针,边对比,边更新DOM

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apple developer证书、标识符和描述文件

Apple developer证书、标识符和描述文件 一、准备1&#xff0c;开发者账号2&#xff0c;CSR文件3&#xff0c;DeviceID 二、过程1&#xff0c;证书&#xff08;Certificates&#xff09;2、标识符&#xff08;Identifiers&#xff09;3、描述文件&#xff08;Profiles&#xff…

C语言之动态内存管理篇(1)

目录 为什么存在动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 今天收假了&#xff0c;抓紧时间写几篇博客。我又来赶进度了。今天我们来讲解动态内存管理。&#x1f197;&#x1f197; 为什么存在动态内存分配 假设我们去实现一个…

Iris for Mac:轻松实现高质量录屏的最佳选择

随着数字化时代的到来&#xff0c;录屏软件已经成为了许多人必备的工具之一。无论是教育、工作还是娱乐&#xff0c;录屏软件都可以帮助我们将重要的操作过程或内容记录下来&#xff0c;并与他人分享。而对于Mac用户来说&#xff0c;一款简单易用且功能强大的录屏软件尤为重要。…

划片机:半导体生产的必备设备

划片机是半导体加工行业中的重要设备&#xff0c;主要用于将晶圆切割成晶片颗粒&#xff0c;为后道工序粘片做好准备。随着国内半导体生产能力的提高&#xff0c;划片机市场的需求也在逐渐增加。 在市场定位上&#xff0c;划片机可以应用于半导体芯片和其他微电子器件的制造过程…

015 Spring Boot网上商城(仿天猫)

一、系统介绍 需求设计主要参考天猫商城的购物流程&#xff1a; 用户从注册开始&#xff0c;到完成登录&#xff0c;浏览商品&#xff0c;加入购物车&#xff0c;进行下单&#xff0c;确认收货&#xff0c;评价等一系列操作。 作为迷你天猫商城的核心组成部分之一&#xff0…

为什么公司里月薪八千的PLC工程师经常离职?

今日话题&#xff0c;为什么公司里月薪八千的PLC工程师经常离职&#xff1f;这个问题涉及到工程师的个人偏好和工作性质的不同。许多工程师更喜欢在一个稳定的地方工作&#xff0c;而不是经常出差。然而&#xff0c;也有一些工程师喜欢出差&#xff0c;他们更愿意在不同的现场工…

PMP认证,对项目经理有什么用?

PMP是什么&#xff1f;学什么&#xff1f; PMP是由美国项目管理协会&#xff08;PMI&#xff09;在全球范围内推出的针对项目经理的资格认证体系&#xff0c;严格评估项目管理人员知识技能是否具有高品质的资格认证考试&#xff0c;其目的是为了给项目管理人员提供统一的行业标…

【Python_PySide2学习笔记(十七)】QPlainTextEdit末尾增加文本时设置文本颜色

QPlainTextEdit末尾增加文本时设置文本颜色 前言正文1、QPlainTextEdit末尾增加文本时设置文本颜色方法2、f_changeQPlainTextEditColor()方法调用前言 此篇文章中介绍PySide2中 QPlainTextEdit 多行文本框在末尾增加文本的同时设置文本颜色的方法,而对插入的文本进行区分,有…

设计模式13、模版方法模式 Template Method

解释说明&#xff1a;模版方法模式&#xff08;Template Method Pattern&#xff09;定义一个操作中算法的骨架&#xff0c;而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 抽象类&#xff08;AbstractClass&#xff09;&…

二分查找 红蓝染色法 【基础算法精讲 04】

视频链接 : 二分查找 红蓝染色法_哔哩哔哩_bilibili 在排序数组中查找元素的第一个和最后一个位置 链接 : 在排序数组中查找元素的第一个和最后一个位置 思想 : 暴力 : 在lc上&#xff0c;直接暴力枚举左端点和右端点也是能够通过的! 二分 : 题目要求在O(log n)的时…

ToBeWritten之威胁狩猎环境应用

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

放弃36年的鞋服业务转而“卖粮”,贵人鸟胜算几何?

正处“中年”的运动鞋服老品牌贵人鸟&#xff0c;却开始了一场大转型。 近日&#xff0c;贵人鸟发布了优化调整公司经营业务的公告。公告提到&#xff0c;公司将逐步退出运动鞋服业务&#xff0c;聚焦粮食贸易。 回顾来看&#xff0c;贵人鸟曾在运动鞋服领域颇受市场认可。据了…

千兆光模块和万兆光模块已经过时了吗?

千兆和万兆光模块在过去很长一段时间里是网络交换机和路由器的核心所在&#xff0c;它们基于光纤传输技术&#xff0c;具有高速、稳定、效率高的特点。随着数字时代的来临&#xff0c;网络端也催生了更大带宽需求&#xff0c;这无疑对光模块的性能提出了更高的要求。我们不得不…

vue3富文本编辑器的二次封装开发-Tinymce

欢迎点击领取 -《前端面试题进阶指南》&#xff1a;前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的&#x1fa9c; 简介 1、安装&#xff1a;pnpm add tinymce / pnpm add tinymce/tinymce-vue > Vue3 tinymce tinymce/tinymce-vue 2、功能实现图片上传…

分布式锁:5种方案解决商品超卖的方案

一 分布式锁 1.1 分布式锁的作用 在多线程高并发场景下&#xff0c;为了保证资源的线程安全问题&#xff0c;jdk为我们提供了synchronized关键字和ReentrantLock可重入锁&#xff0c;但是它们只能保证一个工程内的线程安全。在分布式集群、微服务、云原生横行的当下&#xff…

w10系统 如何使用 C++、cmake、opencv、

w10系统的C环境配置 1.安装 vscode编辑器 首先安装&#xff1a;VScode 安装后开始安装插件&#xff1a; C 插件 2.配置w10系统的C环境 使用编译器MinGW 官方地址&#xff1a;https://www.mingw-w64.org/ 下载地址&#xff1a;https://sourceforge.net/projects/mingw-w64/f…

AI产品经理-能力模型

一、概况 AI产品经理/助理&#xff08;需求工程师&#xff09;&#xff1a;大多数入门的AI产品经理应该都在这里&#xff0c;顾名思义&#xff0c;就是在整体产品规划中帮助大PD实现部分产品功能的助理或者需求工程师&#xff0c;需要具备比较强的AI知识框架与理解能力以保障各…

Openlayers 教程 - 地图以及图层数据导出(打印)图片

Openlayers 教程 - 地图以及图层数据导出&#xff08;打印&#xff09;图片 地图导出核心代码完整代码&#xff1a;在线示例 本文包括地图导出核心代码、完整代码以及在线示例。 地图导出核心代码 这里放上 ES 封装的核心代码&#xff0c;创建多边形或者其他几何对象&#xff…

做小说推文和短剧推广,找数据好的授权平台

小说推文和短剧推广很多平台吃单怎么办&#xff1f;可以试试”巨量推文“&#xff0c;一个不吃单的平台 众所周知 小说推文和短剧推广很多平台会吃单&#xff0c;比如你实际官方数据是10个订单&#xff0c;很多平台只给你5个&#xff0c;这样你损失可能就是一半的利润&#xf…

【MySQL】基本查询(二)

文章目录 一. 结果排序二. 筛选分页结果三. Update四. Delete五. 截断表六. 插入查询结果结束语 操作如下表 //创建表结构 mysql> create table exam_result(-> id int unsigned primary key auto_increment,-> name varchar(20) not null comment 同学姓名,-> chi…