前端面试题整理14

news2025/1/11 19:44:37

目录

1.什么是同步?什么是异步?

2.localStorage、sessionStorage和cookie的区别?

3.Vue中key的作用是什么?

4.支付流程是什么?

5.Vuex的模块化是如何做的?

6.Vite和webpack的不同?Vite的优势是什么?

7.事件冒泡和捕获?

8.React中的事件合成机制?

9.Map,foreach,for...of区别?

10.组件之间如何自定义实现一个v-model?


1.什么是同步?什么是异步?

同步就是调用某个东西时,调用方需等待这个调用返回结果才能继续往后执行。

异步是在调用发出后调用者可用继续执行后续操作,被调用者通过状体来通知调用者,或者通过回掉函数来处理这个调用。

2.localStorage、sessionStorage和cookie的区别?

①存储的有效期不同:cookie在设置的有效期内一直有效;sessionStorage在浏览器关闭后就会失效;localStorage永久有效。

②存储大小不同:cookie的存储量是4kb左右;localStorage和sessionStorage的存储容量是5Mb或更大。

③对浏览器的支持:cookie对所有浏览器都支持;localStorage和sessionStorage对于版本较低的浏览器不支持(比如IE8版本以下的都不支持)。

④与服务端的通信:cookie会参与到服务端的通信中,一般会携带在http请求的头部;localStorage和sessionStorage不参与与服务端的通信。

3.Vue中key的作用是什么?

Vue中key的作用是用于优化组件的渲染,当组件的key发生变化时,Vue会销毁旧的组件并重新创建一个新的组件,从而避免出现组件复用的问题。

4.支付流程是什么?

5.Vuex的模块化是如何做的?

Vuex的模块化是通过将Vuex的state、mutations、actions和getters拆分成多个小模块来实现的。具体来说,可以将Vuex的代码拆分成多个模块,每个模块可以有自己的state、mutations、actions和getters。这些模块可以通过Vuex的模块化注册方式注册到Vuex的store中。

6.Vite和webpack的不同?Vite的优势是什么?

①构建方式:Vite使用ESM原生模块化开发,它不需要预先构建,而是在浏览器端实时编译和构建;Webpack则是通过打包构建生成静态文件,在浏览器端加载。

②构建速度:由于Vite的构建方式不需要预先构建,所以它的构建速度比Webpack更快。在开发过程中,Vite可以实时编译和构建,所以它可以更快地更新更改后的代码。

③插件机制:Vite采用了基于Rollup的插件机制,可以轻松地扩展和定制开发环境;Webpack的插件机制则相对复杂,需要对Webpack的内部机制有一定的了解。

④对开发体验的优化:Vite针对开发过程进行了优化,它支持快速的HMR(热更新)功能,可以在不刷新浏览器的情况下实时更新应用程序,提高开发效率。

⑤静态资源处理:Vite支持在开发环境下直接加载静态资源,而Webpack需要将静态资源打包到输出文件中。

Vite相对于Webpack的优势主要在于构建速度快、开发体验好、支持原生ESM模块化开发以及插件机制简单等方面。因此,对于开发小型应用或者需要频繁调试的场景,使用Vite会更加方便和高效。

7.事件冒泡和捕获?

事件冒泡和捕获是指事件传递的两种方式。

事件冒泡是指事件从子元素向父元素逐级传递,而事件捕获则是从父元素向子元素逐级传递。

事件冒泡将从一个子元素开始,在 DOM 树上传播,直到最上面的父元素事件被处理。

事件捕获是事件传播的初始场景,从包装元素开始,一直到启动事件生命周期的目标元素。

8.React中的事件合成机制?

React中的事件合成机制是指React将浏览器原生事件封装成一个合成事件对象,这样可以屏蔽浏览器兼容性和性能问题。React使用了事件委托的方式处理事件,将所有事件添加到document上,然后通过冒泡机制从目标元素一直到document,寻找最合适的元素来处理事件。React事件合成机制的好处是可以提高性能,减少内存占用,同时也方便了开发者的使用。

9.Map,foreach,for...of区别?

  • Map:返回一个新数组,数组中的元素为原数组元素调用函数处理后的值。
  • foreach:没有返回值,只是对原数组进行遍历操作,并执行回调函数。
  • for...of:遍历可迭代对象,例如数组、字符串、Map等。每次迭代返回一个元素的值。

10.组件之间如何自定义实现一个v-model?

在React中,v-model可以理解为一个双向绑定的语法糖,可以通过props将组件状态传递给父组件,再由父组件修改状态,然后通过props将修改后的值传递回子组件。

实现步骤如下:

  1. 在子组件中定义一个value属性和一个onChange事件处理函数。
  2. 在父组件中定义一个handleValueChange函数,用于修改value的值。
  3. 在父组件中通过props将handleValueChange函数和value的值传递给子组件。
  4. 在子组件中绑定value属性和onChange事件处理函数,当value值改变时,调用onChange事件处理函数,并将新的value值传递给父组件的handleValueChange函数。
    // 子组件
    function ChildComponent(props) {
      return (
        <div>
          <input value={props.value} onChange={props.onChange} />
        </div>
      );
    }
    
    // 父组件
    function ParentComponent() {
      const [value, setValue] = useState('');
    
      const handleValueChange = (newValue) => {
        setValue(newValue);
      };
    
      return (
        <div>
          <ChildComponent value={value} onChange={(e) => handleValueChange(e.target.value)} />
        </div>
      );
    }

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

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

相关文章

BS LIS系统仪器数据采集方法

BS LIS系统仪器数据采集方法 BS LIS系统对检验仪器的数据采集主要通过串行口通讯、USB端口通讯、TCP/IP通讯、定时监控数据库和手工录入等几种方法。串行口通讯最为普遍&#xff0c;采用RS-232C标准&#xff0c;一般的仪器都支持此标准。定时监控数据库对仪器管理机上已有的检…

【Vue】Element Plus和Element UI中插槽使用

文章目录 前言一、两者的区别二、组件库三、具体讲解总结 前言 今天和大家讲一下Element Plus和Element UI这两个组件库中表格的插槽使用方法&#xff0c;一般情况下vue2使用Element UI这个组件库&#xff0c;表格组件的插槽的话一般都是使用v-slot&#xff0c;而vue3使用Elem…

如何进行有效的移动应用测试?10个步骤带你一战成神

移动应用的市场日益壮大&#xff0c;而随着这个市场的发展&#xff0c;如何有效地测试移动应用也成为了一个重要的问题。本文将为你提供一些关于如何进行有效的移动应用测试的建议&#xff0c;并提供一些实际测试例子。 1. 理解你的用户和使用场景 在进行移动应用测试之前&…

rror updating database. Cause: java.sql.SQLSyntaxErrorException解决方案

错误描述&#xff1a; ### Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near CONDITION 1 这里是因为字段名…

Linux多线程认识

目录 &#x1f427;一、什么是线程 1.1虚拟地址如何转换成物理地址 1.2多线程 1.3Linux进程vs线程 1.4从Linux内核和CPU的角度看线程 &#x1f427;二、Linux线程控制 2.1POSIX线程库 2.2线程异常 2.3线程终止 ①exit不可以用来终止线程 ②pthread_exit() ③pthread…

Revit干货|自动捕捉遇到困难?这份秘诀请收好!

在BIM行业里&#xff0c;Revit往往影响着我们的建模效率&#xff0c;尽管软件提供了许多功能&#xff0c;但在建模过程中还是会因繁琐的操作而浪费很多时间。 因此&#xff0c;在使用Revit建模时&#xff0c;我们需要掌握一些小技巧来提升效率&#xff0c;如快捷键的使用和工具…

早餐配送APP小程序开发 轻轻一点搞定营养早餐

早餐是一日三餐中最重要的一餐&#xff0c;需要营养添加。但是现在多数的年轻人因为快节奏的生活工作二忽视了早餐的重要性&#xff0c;没有时间做就对付几口很多人甚至不吃早餐。早餐预定配送APP小程序开发解决了上班族的早餐问题&#xff0c;不用排队到早餐店去挤着买豆浆油条…

Langchain学习笔记

Langchain学习笔记 1.环境2. 1.环境 1.创建虚拟环境,名叫langchain conda create -n langchain python conda activate langcahin pip install langchain pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple2.在jupyter中使用这个虚拟环境。 conda activate l…

DG4pros 1:500地籍精度免像控实验

前言 DG4pros是睿铂目前综合性能最强大的高端倾斜摄影相机&#xff0c;它完成了许多以前在业内人士认为难以做到或者不可能完成的项目。本期&#xff0c;我们实验的内容是1:500地籍精度的免相控作业。 DG4pros倾斜摄影相机 一.实验目的 本次实验共进行两组测试&#xff0c;分…

vue项目复制----复制一个项目为另一个项目仍然访问原来老项目代码

表现就如下边这张图&#xff0c;新项目名字叫pccs&#xff0c;旧项目名字叫vue-element-admin&#xff0c;能启动&#xff0c;运行成功&#xff0c;一切正常&#xff0c;但是你会发现仍然是老项目的。 解决办法&#xff1a;

Javascript的闭包,匿名函数,自动调用

这里写目录标题 验证文本框HTMLJavascript分析var引起的赋值错误最优的解决方案forEach(function(item){})最简单的方式&#xff0c;const/let 申明一个局部变量直接使用函数通过声明函数变量的方式定义函数申明匿名函数和自动调用函数的区别 在案例的基础上分析。 验证文本框 …

未来工业的新趋势:探索智慧工厂的创新之路

随着科技的不断进步和工业的快速发展&#xff0c;智慧工厂正在逐渐改变传统的生产模式&#xff0c;成为现代工业的新趋势。智慧工厂以数字化、自动化和智能化为核心&#xff0c;通过信息技术和物联网的应用&#xff0c;实现生产线的高效运行和优化管理&#xff0c;为企业带来诸…

贾跃亭带着汽车梦回来了,FF 91 正式量产售价 220 万元

就在最近&#xff0c;许久不见的贾老板贾跃亭再度登上热搜。 原因无他&#xff0c;其 5 月 31 日召开视频发布会&#xff0c;宣布法拉第未来 FF 91 开启首批量产交付。 这一向大家画了九年的汽车大饼终于正式落地。 期间 FF 91 因为资金困境多次跳票&#xff0c;但贾老板向我…

工业树莓派的Socket通信之旅:探索智能工业应用的无限可能

一、什么是Socket通信 Socket通信是一种网络通信协议&#xff0c;用于在计算机之间进行数据传输。它提供了一种可靠的、双向的、面向连接的通信方式。通过Socket&#xff0c;计算机之间可以建立起通信链接&#xff0c;并在连接上发送和接收数据。它可以用于不同的网络协议&…

初识MYSQL组复制MGR

注&#xff1a;本文翻译自https://dev.mysql.com/doc/refman/8.0/en/group-replication.html 背景 创建容错系统的最常见方法是使组件冗余&#xff0c;换句话说&#xff0c;可以删除组件&#xff0c;而系统应继续按预期运行。这就产生了一系列挑战&#xff0c;将这类系统的复…

数据结构与算法·第5章【数组和广义表】

数组 基本操作 InitArray(&A, n, bound1, ..., boundn)DestroyArray(&A)Value(A, &e, index1, ..., indexn)Assign(&A, e, index1, ..., indexn)数组的顺序表示 两种顺序映象的方式: 以行序为主序(低下标优先)&#xff1b;以列序为主序(高下标优先)。 而 n…

Go语言学习-创建Go模块(1)

这是介绍Go语言基础特性的第一部分教程。如果你是开开开始学习Go&#xff0c;请确保你看了关于介绍Go语言语法&#xff0c;Go模块的简洁代码文章&#xff1a;启动Go 在本教程中&#xff0c;你将会创建两个模块。第一个模块是个库来被用作其他库或者应用程序来引用。第二个模块是…

msvcp140.dll重新安装的三个解决方法,解决找不到msvcp140.dll问题

msvcp140.dll是Microsoft Visual C Redistributable for Visual Studio 2015的一个重要组件&#xff0c;它是一个动态链接库文件&#xff08;DLL&#xff09;&#xff0c;包含许多用于开发和执行C程序的函数。如果它不在您的计算机上或不正确&#xff0c;您将收到一个错误消息&…

linux 部署mysql

本文介绍下Centos7中mysql的安装(Centos7以下版本中有些命令和centos7中有些不同&#xff0c;安时需注意下自己的linux版本) 事先准备 1、查看系统中是否自带安装mysql yum list installed | grep mysql ![在这里插入图片描述](https://img-blog.csdnimg.cn/e322b2f4036c4d9…

不愧是华为出来的,太强了。。。

前言 实习去了博彦科技&#xff08;外包&#xff09;&#xff0c;做的就是螺丝钉的活&#xff0c;后面还因为人效不佳&#xff0c;被开了。 正式毕业后去了另外一个做电子发票的公司&#xff0c;但是都是功能测试和一点点APP测试&#xff0c;然后经常被开发怼&#xff0c;测试…