vue2.0及起步(前端面试知识积累)

1、需要了解的vue概要知识

1、vue是什么?

一套用于构建用户界面的渐进式JavaScript框架。

为什么vue被称为是渐进式JS框架?
答:Vue允许开发者在不同的项目中以渐进式的方式使用它,这种渐进式表现在以下的方面:

  1. 逐步采用:Vue可以被逐步引用到现有的项目中,而不是需要一次性重写整个应用。可以选择将Vue用于某个小部分的界面,或者将其应用于整个应用程序的开发。
  2. 轻量级核心:Vue的核心库非常轻量级,只关注图层,并且易于学习和上手。你可以根据自己的需求选择性地添加插件和库来扩展Vue的功能,而不需要太多的复杂性。
  3. 单文件组件:Vue支持单文件组件,即将模版、样式和逻辑组合在一个文件中。这种方式可以使组件化开发更加方便,可以逐步地将应用程序拆分成可重用组件。
  4. 逐步增强 : vue提供了丰富的功能和工具,包括路由、状态管理、服务器端渲染等,但你可以根据项目的需求选择性地使用这些功能,而不是一次性全部采用。

总的来说,Vue的渐进式特性使得开发者可以根据项目的需求和自身技术栈的情况灵活使用它,这也是Vue被广泛应用的重要原因之一。

2、Vue的创始人

  • 2013年,创始人是尤雨溪,2013年受到Angular框架的启发,开发出一款轻量框架-Seed,同年12月将其改名为Vue,版本号0.6.0
  • 2014年,开始正式对外发布,版本号为0.8.0,Taylor otwell在Twitter上发布动态,说自己在学习Vue.js,引起Taylor otwell的技术粉丝也开始学习,Vue.js在此相当于得到了宣传和推广。

Taylor Otwell 是一位知名的软件工程师,他是 Laravel 框架的创始人和主要开发者。Laravel 是一个流行的 PHP Web 开发框架,被广泛用于构建各种规模的 Web 应用程序。Otwell 也是 Laravel 生态系统中其他工具和项目的创建者,他的工作对于推动 PHP 开发社区的发展和创新起到了重要作用。

  • 2015年,10月27日,正式发布版本Vue1.0.0 Evangelion(新世纪福音战士)
  • 2016年,10月1日,正式发布版本Vue2.0.0 Ghost in the Shell(攻壳机动队)
  • 2020年,9月18日,正式发布Vue 3.0.0 One Plece(海贼王)

后起之秀(Vue之前有ReactAngular,Vue的创建有参考Angular),生态完善,已成为国内前端工程师必备技能。

3、Vue的特点

采用组件化模式,提高代码复用率,且让代码更好维护。

image.png

  • 提高代码复用率:如上vue开发的项目中,如果开发的应用中多次出现活动窗口这个小窗口,就可以将推荐活动窗口处理成一个组件,在这个项目中,哪里使用,就在哪里调用就可以了。提高了代码的复用率。
  • 更好维护:如果以后想改News这个模块,就可以直接在封装好的News这个组件中去改,而不会触碰到Activity和Hot组件。

声明式编码,让编码人员无需直接操作DOM,提高开发效率。

image.png

声明式编码vs命令式编码3
命令式编码和声明式编码是两种不同的编程范式,它们的区别主要在于编写代码的方式和思维方式:

  1. 命令式编码:
  • 在命令式编码中,开发者需要明确地指示计算机执行每一个步骤以达到特定的结果。
  • 开发者需要编写详细的指令,包括控制流程、数据处理和状态管理等。
  • 典型的命令式编码语言包括C、Java和JavaScript等。
  • 例如,使用循环来迭代数组并对每个元素执行特定的操作就是典型的命令式编码风格。
  1. 声明式编码:
  • 在声明式编码中,开发者只需要描述所需的结果,而不需详细说明如何实现。
  • 开发者将更多精力放在定义问题的本质和所需的结果上,而不是具体的实现细节。
  • 典型的声明式编码范例包括SQL和HTML。
  • 例如,在HTML中,你描述的解构和内容,而不需要关系如何在浏览器中渲染它们。

总的来说,命令式编码更加关注实现的细节和控制流程,而声明式编码更加关注所需的结果和问题的描述。对于声明式编码,需要记忆。

使用虚拟DOM+优秀的Diff算法,尽量复用DOM节点。


Vue 使用虚拟 DOM(Virtual DOM)作为其核心机制之一,这是一种性能优化手段,用于提高 Web 应用程序的渲染效率和性能。理解 Vue 中的虚拟 DOM 有助于理解 Vue 是如何工作的以及为什么它在性能方面表现优秀。

  1. 什么是虚拟 DOM
    • 虚拟 DOM 是一个轻量级的 JavaScript 对象树,它对应着真实 DOM 中的元素和组件。
    • Vue 组件的模板被编译成虚拟 DOM 树,而不是直接操作真实的 DOM 元素。
    • 虚拟 DOM 可以在内存中进行操作和修改,而无需直接操作浏览器中的 DOM。
  2. 为什么使用虚拟 DOM
    • 虚拟 DOM 允许 Vue 在更新数据时进行高效的 DOM 操作,因为操作的是 JavaScript 对象而不是实际的 DOM 元素。
    • Vue 使用虚拟 DOM 实现了一种称为 “diffing” 的算法,用于比较新旧虚拟 DOM 树的差异,并最小化实际 DOM 的操作次数。
    • 通过减少实际 DOM 操作的次数,Vue 能够提高页面的渲染效率和性能,尤其是在大型应用程序中或有大量动态数据的情况下。
  3. 如何工作
    • 当数据发生变化时,Vue 会重新渲染虚拟 DOM 树。
    • Vue 使用 diff 算法比较新旧虚拟 DOM 树的差异,并将变化的部分应用到实际的 DOM 中,从而更新用户界面。
    • 这种方式避免了直接操作实际 DOM,提高了性能并确保页面的快速响应。

总的来说,Vue 中的虚拟 DOM 通过在内存中操作 JavaScript 对象来提高页面渲染效率,减少了直接操作实际 DOM 的次数,从而改善了性能并提高了用户体验。

image.png

学习Vue之前需要掌握的JavaScript基础知识?

  • ES6语法规范(解构赋值、模版字符串、箭头函数等等)
  • ES6模块化(默认暴露、分别暴露、统一暴露、impo`rt、isport)
  • 包管理器(npm、Yarn)
  • 原型、原型链
  • 数组常用方法(如:过滤、加工、筛选最值等)
  • axios
  • promise(深入理解现代JS参考书P159)

补充1:最流行和常用的JavaScript 的包管理工具

  1. npm(Node Package Manager):npm 是 Node.js 的官方包管理工具,也是最常用的 JavaScript 包管理工具之一。它提供了一个庞大的包仓库,开发者可以在其中找到并安装各种 JavaScript 包。
  2. Yarn:Yarn 是由 Facebook、Google、Exponent 和 Tilde 联合开发的 JavaScript 包管理工具,旨在解决 npm 的一些性能和安全方面的问题。Yarn 支持并行安装,能够更快地下载和安装依赖包。
  3. pnpm:pnpm 是另一个 JavaScript 包管理工具,与 npm 和 Yarn 不同的是,pnpm 采用符号链接技术来共享依赖包,节省了磁盘空间,并且可以快速安装依赖包。
  4. Bower:Bower 是一个专门用于管理前端库和框架的包管理工具,但在近年来已经逐渐被 npm 和 Yarn 取代。
  5. pnpm:与传统的 npm 或 Yarn 不同,pnpm 采用符号链接技术共享依赖,这意味着同一个包只有一个实例被保存在磁盘上,可以节省大量磁盘空间。
  6. pnpm:pnpm 也是一个 JavaScript 包管理工具,它采用符号链接技术共享依赖,可以节省磁盘空间,并且安装依赖的速度比较快。
  7. Yarn 2(也称为 Berry):是 Yarn 的下一代版本,具有改进的性能和更好的可扩展性。Yarn 2 与之前的版本不兼容,采用了一些新的工作流程和配置方式。

这些都是 JavaScript 社区中常用的包管理工具,开发者可以根据自己的需求和偏好选择合适的工具。

补充1:axios和ajax和XMLHttpRequest之间的关系

Axios定义

Axios是一个基于promise 的 HTTP 库(类似于jQuery的Ajax,用于HTTP请求),用于在浏览器和 Node.js 中进行 HTTP 请求。它提供了简单易用的 API,可以用于发送各种类型的 HTTP 请求(如 GET、POST、PUT、DELETE 等),并处理响应数据。

Axios原理:

axios(ajax i/o system)不是一种新技术,本质上也是对原生XHR(XMLHttpReques)的封装,只不过它是基于Promise的,是Promise的实现版本,符合最新的ES规范。

Axios的功能和特点:

  1. 简单易用:Axios 提供了简洁的 API,使得发送 HTTP 请求变得非常容易。它支持链式调用,可以方便地配置请求和处理响应。
  2. 基于 Promise:Axios 使用 Promise 对象来处理异步操作,使得处理 HTTP 请求变得更加灵活和可靠。你可以使用 async/await 或者 Promise 的 then/catch 方法来处理请求结果。
  3. 浏览器和 Node.js 兼容:Axios 可以在浏览器端和 Node.js 环境中都可以使用,这使得它非常适用于开发全栈应用程序。
  4. 支持请求和响应拦截器:Axios 提供了请求和响应拦截器,允许你在发送请求前和处理响应后进行一些自定义的操作,比如添加请求头、修改请求数据、处理错误等。
  5. 支持取消请求:Axios 提供了取消请求的功能,可以通过取消令牌来中止正在进行的请求,防止不必要的请求发送。
  6. 自动转换请求和响应数据:Axios 提供了自动转换请求和响应数据的功能,可以根据 Content-Type 自动将请求数据转换为合适的格式,并将响应数据转换为 JavaScript 对象。

综上,Axios 是一个功能强大、易用的 HTTP 客户端库,广泛用于发送 HTTP 请求并处理响应数据,是现代 JavaScript 应用开发中的常用工具之一。

axios和ajax的比较:

  1. API 风格
    • Axios 提供了基于 Promise 的 API,使得处理异步操作更加方便和可靠。它支持使用 async/await 或者 Promise 的 then/catch 方法来处理请求和响应。
    • AJAX 使用传统的回调函数来处理异步操作,可能会导致回调地狱(callback hell)和代码不易维护的问题。
  2. 浏览器兼容性
    • Axios 支持在浏览器端和 Node.js 环境中使用,这使得它更具灵活性,可以在客户端和服务器端都使用相同的代码。
    • AJAX 主要用于浏览器端,虽然也可以在 Node.js 中使用,但并不是主要用途。
  3. 功能扩展
    • Axios 提供了丰富的功能,比如请求和响应拦截器、取消请求、自动转换请求和响应数据等。
    • AJAX 原生的功能相对较少,通常需要借助其他库或框架来扩展其功能。
  4. 错误处理
    • Axios 提供了更强大和灵活的错误处理机制,可以方便地处理各种类型的错误,并提供了全局的错误处理方式。
    • AJAX 的错误处理相对简单,通常需要通过回调函数来处理错误,可能会造成代码的混乱和冗余。

综上,尽管 Axios 和 AJAX 都可以用于发送 HTTP 请求,但 Axios 在 API 风格、浏览器兼容性、功能扩展和错误处理等方面都有优势,因此在现代 JavaScript 应用开发中更加常用和推荐。

axios和ajax和XMLHttpRequest之间的关系

  • Ajax的实现依赖于XMLHttpRequest对象,即XMLHttpRequest可以实现Ajax。
  • Axios在此基础上封装了XMLHttpRequest,即Axios可以实现Ajax。

参考学习指路:儒雅的烤地瓜博主的文章https://blog.csdn.net/sunyctf/article/details/129002056?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170894967816800226599625%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=170894967816800226599625&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-2-129002056-null-null.142v99pc_search_result_base7&utm_term=Axios&spm=1018.2226.3001.4187 地瓜大大的这篇文很详细的讲解了这三者之间的关系,给大家指路学习。

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

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

相关文章

这几个Python内置函数你都知道吗

divmod() divmod() 是一个 Python 内置函数,用于同时返回商和余数。它接受两个参数,第一个参数是被除数,第二个参数是除数,返回一个包含两个值的元组,第一个值是商,第二个值是余数。 示例用法如下&#…

【Simulink系列】——动态系统仿真 之 混合系统

声明:本系列博客参考有关专业书籍,截图均为自己实操,仅供交流学习! 一、混合系统概述 由不同类型系统共同构成的系统称为混合系统!仿真时必须考虑连续信号和离散信号的采样匹配问题,一般使用变步长连续求…

SpreadJS+vue3练手使用

SpreadJS的练手使用 // 首先在 package.json 这个文件里{"name": "app-admin","private": true,"version": "0.0.0","type": "module","scripts": {"dev": "vite",&quo…

【深度学习笔记】 3_13 丢弃法

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 3.13 丢弃法 除了前一节介绍的权重衰减以外,深度学习模型常常使用丢弃法(dropout)[1] 来应对过拟合…

阿里面试:最佳线程数,如何确定?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音、百度、网易的面试资格,遇到很多很重要的面试题: 如何确定系统的最佳线程数? 小伙伴 没有回…

阿里云服务器ECS u1实例性能怎么样?

阿里云服务器ECS u1实例,2核4G,5M固定带宽,80G ESSD Entry盘优惠价格199元一年,性能很不错,CPU采用Intel Xeon Platinum可扩展处理器,购买限制条件为企业客户专享,实名认证信息是企业用户即可&a…

spring boot 集成科大讯飞星火认知大模型

一、安装依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/…

Educational Codeforces Round 160 (Rated for Div. 2) D. Array Collapse(笛卡尔树+DP)

原题链接&#xff1a;D. Array Collapse 题目大意&#xff1a; 给你一个长度为 n n n 的排列 p p p &#xff0c;排列的定义为 [ 1 , 2 , 3 , . . , n ] [1,2,3,..,n] [1,2,3,..,n] 中每个数都出现 恰好 一次。 你可以做 任意多次 这样的操作&#xff1a; 选出一个任意长度…

unity导航网格无法烘培到台阶和斜坡

如图是我在b站学Unity导航网格时建的一个示例场景&#xff0c;本场景使用的为棱长1m的立方体&#xff0c;读者可以以此为参照度量其他物体大小。 可见导航网格根本无法烘焙到斜坡和台阶上&#xff0c;为解决问题我做了不少尝试&#xff0c;调整最大坡度和步高都没办法解决问题…

AI新纪元:可能的盈利之道

本文来源于Twitter大神宝玉&#xff08;dotey&#xff09;在聊 Sora 的时候&#xff0c;总结了 Sora 的价值和可能的盈利方向&#xff0c;我把这部分内容单独摘出来再整理一下。现在的生成式 AI 大家应该不陌生&#xff0c;用它总结文章、翻译、写作、画图&#xff0c;当然真正…

搭建私有Git服务器:GitLab部署详解

引言&#xff1a; 为了方便团队协作和代码管理&#xff0c;许多组织选择搭建自己的私有Git服务器。GitLab是一个集成了Git版本控制、项目管理、代码审查等功能的开源平台&#xff0c;是搭建私有Git服务器的理想选择。 目录 引言&#xff1a; 一、准备工作 在开始部署GitLab之…

MySQL数据库基础(十五):PyMySQL使用介绍

文章目录 PyMySQL使用介绍 一、为什么要学习PyMySQL 二、安装PyMySQL模块 三、PyMySQL的使用 1、导入 pymysql 包 2、创建连接对象 3、获取游标对象 4、pymysql完成数据的查询操作 5、pymysql完成对数据的增删改 PyMySQL使用介绍 提前安装MySQL数据库&#xff08;可以…

shell脚本介绍及基本功能

目录 1. 什么是shell 2. hello word 2.1 echo 2.2 第一个脚本 3. Bash的基本功能 3.1别名 3.2 常用快捷键 3.3 输入输出 3.4 输出重定向 3.5 多命令执行 3.6 管道符 3.7 通配符和特殊符号 1. 什么是shell Shell 是一个用 C 语言编写的程序&#xff0c;它是用户使用…

STM32--低功耗模式详解

一、PWR简介 正常模式与睡眠模式耗电是mA级&#xff0c;停机模式与待机模式是uA级。 二、电源框图 供电区域有三处&#xff0c;分别是模拟部分供电&#xff08;VDDA&#xff09;&#xff0c;数字部分供电&#xff0c;包括VDD供电区域和1.8V供电区域&#xff0c;后备供电&…

mysql和redis双写一致性策略分析

mysql和redis双写一致性策略分析 一.什么是双写一致性 当我们更新了mysql中的数据后也可以同时保证redis中的数据同步更新&#xff1b; 数据读取的流程&#xff1a; 1.读取redis,如果value!null,直接返回&#xff1b; 2.如果redis中valuenull&#xff0c;读取mysql中数据对应的…

Leaflet-学习

一、官网 英文官网&#xff1a;Leaflet 中文官网&#xff1a;Leaflet 二、介绍 Leaflet 是一个开源并且对移动端友好的交互式地图 JavaScript 库。 它大小仅仅只有39 KB, 并且拥有绝大部分开发者所需要的所有地图特性。 Leaflet 简单、高效并且易用。 它可以高效的运行在桌…

uni-app原生api的promise化以解决异步等待问题分析

相信各位在进行uni-app开发的时候会遇到各种关于异步回调问题&#xff0c;例如要传code给后端以换取session_key&#xff0c;在这之前需要先调用 uni.login&#xff0c;所以执行的顺序是必须同步等待的。在写这篇文章之前对于整体的流程概念需要做一个梳理&#xff0c;以便能更…

SSMBUG之 url +

1. Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured. 经查, 书写一切正常. 注意到此时yml文件的图标是一个红色的Y而不是绿色的spring , 推测没有正确加载. 重新创建项目, 所有东西拷贝一份便恢复正常…

猫头虎分享已解决Bug || AttributeError: ‘Sequential‘ object has no attribute ‘session‘

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

MySQL报错:sql_mode=only_full_group_by解决方法

Linux环境 ubuntu 22.04 MySQL是8.0.35版本 问题描述 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column auth_system.t_class_temp_config.id which is not functionally dependent on columns in GROUP BY clause; this is inco…