No114.精选前端面试题,享受每天的挑战和学习

在这里插入图片描述

文章目录

    • vue3中的ref、toRef、toRefs
    • 说明下TS的优缺点
    • 说下函数式组件
    • 说下函数式编程

vue3中的ref、toRef、toRefs

下面是对Vue 3中的reftoReftoRefs进行比较的表格:

reftoReftoRefs
参数类型值类型或引用类型响应式对象响应式对象
返回值Ref 对象Ref 对象响应式对象
关联性与源数据无关,创建新的响应式数据与源数据相关,返回源数据的响应式引用与源数据相关,返回源数据属性的响应式引用
使用场景创建和管理简单的响应式数据引用已有的响应式数据属性引用多个响应式数据属性
响应式性更新时自动触发视图更新更新时自动触发视图更新更新时自动触发视图更新

ref:

  • ref用于创建一个响应式引用(Ref对象),可用于包装并访问任何值(可以是基本类型、对象或数组)。
  • 它返回一个具有.value属性的Ref对象,可以通过.value访问和修改被包装的值。
  • 当被包装的值发生变化时,Vue会自动追踪变化并触发视图的重新渲染。

toRef:

  • toRef用于创建一个指向响应式对象的响应式引用。
  • 它接收一个响应式对象和一个属性名作为参数,返回一个指向该响应式对象属性的响应式引用。
  • 当指定的响应式对象的属性值发生变化时,引用的值也会相应地更新。

toRefs:

  • toRefs用于接收一个响应式对象作为参数,并将其每个属性转换为一个独立的响应式引用。
  • 它返回一个对象,该对象包含了原始响应式对象的每个属性的响应式引用。
  • 当原始响应式对象的属性值发生变化时,对应的响应式引用的值也会相应地更新。

需要注意的是,toReftoRefs都与源数据相关,它们可以在以后的更新中自动更新关联的响应式引用。而ref创建的是一个新的响应式数据,与源数据无直接关联。因此,在选择使用它们时,请根据具体的需求和场景进行选择。

在这里插入图片描述

说明下TS的优缺点

TypeScript(TS)是一种由微软开发的开源编程语言,它是JavaScript的一个超集,通过添加静态类型和其他语言特性来增强JavaScript。下面是TypeScript的优点和缺点的说明:

优点:

  1. 强类型检查:TypeScript引入了静态类型系统,可以在编译时捕获许多常见的错误和潜在的问题。这可以帮助开发人员在编码阶段就发现并解决类型相关的错误,减少运行时错误和调试时间。

  2. 更好的代码维护性:通过明确声明变量类型和函数参数类型,以及使用接口和类等面向对象的概念,TypeScript使得代码更加可读、可理解和可维护。增强的IDE支持还可以提供代码补全、参数提示和类型检查等功能,提高开发效率。

  3. 更好的开发工具支持TypeScript提供了丰富的开发工具支持,如智能代码补全、导航和重构等功能。这些工具可以帮助开发人员更轻松地开发、调试和重构代码。

  4. 渐进式采用TypeScript是JavaScript的超集,这意味着现有的JavaScript代码可以逐步迁移到TypeScript,无需进行大规模的重写。可以通过为现有代码添加类型注解来逐渐引入类型检查,并在需要的地方使用其他高级特性。

  5. 生态系统和社区支持:TypeScript拥有庞大的开发者社区和生态系统,有大量的开源库和框架可供使用。很多流行的JavaScript库和框架也提供了针对TypeScript的类型声明文件,使得与这些库的集成更加方便。

缺点:

  1. 学习成本:相对于纯JavaScript而言,学习和掌握TypeScript需要额外的学习成本。开发人员需要熟悉TypeScript的类型系统、工具链和其他语言特性。尤其是对于初学者来说,上手可能会有一定的难度。

  2. 增加开发时间:在使用TypeScript时,需要花费更多的时间进行类型注解和声明,以及处理类型相关的错误。这可能会增加开发时间,并且在一些简单的项目或原型开发中,这种额外的开销可能并不划算。

  3. 项目配置和构建复杂度:与JavaScript相比,TypeScript在项目配置和构建方面可能需要更多的设置。需要配置tsconfig.json文件来指定编译选项,并将TypeScript代码转换为JavaScript。此外,将TypeScript与一些构建工具(如Webpack)集成也可能需要一些额外的配置和学习成本。

综上所述,TypeScript在提供更好的类型安全性和开发工具支持方面具有明显优势,但也存在学习成本较高和增加开发时间的缺点。在选择使用TypeScript时,需要在项目需求、团队技术能力和开发效率等方面进行权衡和考虑。

说下函数式组件

函数式组件是React中的一种组件形式,它是一个【纯函数】,接收props作为参数,并返回一个描述组件UI的React元素。函数式组件没有内部状态(state),也没有生命周期方法,因此它的设计更加简单和轻量。

函数式组件通常使用无状态函数(Stateless Function)编写,这意味着它不会保持组件的状态。它只负责接收props并返回渲染结果

使用函数式组件的好处是它们易于编写和测试,代码清晰易懂。函数式组件没有this关键字,使得在组件内部没有自身的上下文绑定(context binding),这可以避免一些错误和混淆。

函数式组件在React中的应用越来越广泛。在React 16.8版本之前,函数式组件只能表示无状态组件;然而,React Hooks的引入使得函数式组件也可以处理组件状态和生命周期方法,使得函数式组件可以替代类组件的使用,在开发中提供了更多的选择。

总结一下,函数式组件是一种简单、轻量的React组件形式,通常用于表示无状态的UI组件。通过使用无状态函数编写,函数式组件易于编写、测试和理解。

说下函数式编程

函数式编程(Functional Programming)是一种编程范式,它主要强调使用纯函数来构建程序。
在函数式编程中,函数被视为一等公民,具有以下特点:

  1. 纯函数(Pure Functions):纯函数是指给定相同的输入,总是返回相同的输出,并且没有副作用(Side Effects)。纯函数不会修改外部状态,也不会对外部状态产生影响。纯函数的结果仅依赖于输入参数,且输出结果不影响其他部分的代码执行。这种特性使得纯函数可预测、易于测试和并行处理。

  2. 不可变性(Immutability):在函数式编程中,数据被视为不可变的(Immutable)。一旦创建了一个数据,它就不能被修改,而是通过创建新的数据来表示变化。这样做的好处是可以提高代码的可靠性和可维护性,减少并发编程中的竞态条件。

  3. 函数组合(Function Composition):函数式编程鼓励将小的、可复用的函数组合成更大的、功能更强大的函数。通过将函数串联起来,可以实现更高级的功能,同时保持代码的简洁性和可读性。函数组合可以有效地提高代码的可维护性和可测试性。

  4. 高阶函数(Higher-Order Functions):高阶函数是指可以接受函数作为参数或返回一个函数的函数。这种特性允许我们将逻辑抽象为可重用的函数,提高代码的抽象程度和可扩展性。

  5. 延迟执行(Lazy Evaluation):函数式编程中的操作通常是延迟执行的,只有在需要结果的时候才会真正执行。这种方式可以提高性能,避免不必要的计算。

函数式编程广泛应用于各种编程语言和框架中,例如JavaScript、Python和Haskell等。它提供了一种不同的思考和解决问题的方式,可以使代码更具可读性、可维护性和可测试性。

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

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

相关文章

cmake扩展(5)——file命令排除部分文件

在cmake中可以使用file命令获取需要的文件&#xff0c;并且支持正则/通配符&#xff0c;使用起来还是很方便的。 #语法file({GLOB | GLOB_RECURSE} <out-var> [...] [<globbing-expr>...])#example file(GLOB_RECURSE SOURCES "src/*.h" "src/*.cp…

http库 之 OKHttpUtil

源码位置 方便实用&#xff0c;个人感觉不错 依赖 <dependency><groupId>io.github.admin4j</groupId><artifactId>common-http-starter</artifactId><version>0.7.5</version> </dependency>代码实践 /*** 通用http的pos…

深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)

深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)。 一、简介 单点登录(Single Sign On),简称为 SSO。 它的解释是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 ❝ 所谓一次登录,处处登录。同样一处退出,处处退出。 ❞ 二…

基于ChatYuan-large-v2 微调训练 医疗问答 任务

一、ChatYuan-large-v2 上篇基于ChatYuan-large-v2 语言模型 Fine-tuning 微调训练了广告生成任务&#xff0c;总体生成效果还可以&#xff0c;但上篇文章的训练是微调的模型全部的参数&#xff0c;本篇文章还是以 ChatYuan-large-v2 作为基础模型&#xff0c;继续探索仅训练解…

Centos 8 网卡connect: Network is unreachable错误解决办法

现象1、ifconfig没有ens160配置 [testlocalhost ~]$ ifconfig lo: flags73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopba…

基于HTML+CSS+Echarts大屏数据可视化集合共99套

基于HTMLCSSEcharts大屏数据可视化集合共99套 一、介绍二、展示1.大数据展示系统2.物流订单系统3.物流信息系统4.办税渠道监控平台5.车辆综合管控平台 三、其他系统实现四、获取源码 一、介绍 基于HTML/CSS/Echarts的会议展览、业务监控、风险预警、数据分析展示等多种展示需求…

Python绘制爱心代码(七夕限定版)

写在前面&#xff1a; 又到了一年一度的七夕节啦&#xff01;你还在发愁送女朋友什么礼物&#xff0c;不知道怎样表达你满满的爱意吗&#xff1f;别担心&#xff0c;我来帮你&#xff01;今天&#xff0c;我将教你使用Python绘制一个跳动的爱心&#xff0c;用创意和幽默为这个…

【面试专题】Java核心基础篇②

&#x1f4c3;个人主页&#xff1a;个人主页 &#x1f525;系列专栏&#xff1a;Java面试专题 目录 1.接口和抽象类有什么区别&#xff1f; 2.两个对象的 hashCode() 相同&#xff0c;则 equals()也一定为 true&#xff0c;对吗&#xff1f; 3.说一说hashCode()和equals()的…

机器学习基础之《分类算法(3)—模型选择与调优》

作用是如何选择出最好的K值 一、什么是交叉验证&#xff08;cross validation&#xff09; 1、定义 交叉验证&#xff1a;将拿到的训练数据&#xff0c;分为训练和验证集。以下图为例&#xff1a;将数据分成5份&#xff0c;其中一份作为验证集。然后经过5次(组)的测试&#x…

【简单认识Docker基本管理】

文章目录 一、Docker概述1、定义2.容器化流行的原因3.Docker和虚拟机的区别4.Docker核心概念 二、安装docker三、镜像管理1.搜索镜像2.下载&#xff08;拉取&#xff09;镜像3.查看已下载镜像4.查看镜像详细信息5.修改镜像标签6.删除镜像7.导出镜像文件和拉取本地镜像文件8.上传…

cloud 问题

eureka 自我保护机制 eureka 是定时去拿 统计最近15分钟的eureka实例正常的心跳占比&#xff0c;如果低于85%&#xff0c;那么就会触发自我保护机制。 触发了自我保护机制&#xff0c;eureka 暂时会把失效的服务保护起来&#xff0c;不让其过期&#xff0c;但是这些服务也不是…

用讯飞星火认知大模型构建一个带界面的聊天机器人

在本篇博客中&#xff0c;我们将使用 最新的星火认知大模型和 Tkinter 构建一个简单的聊天机器人界面。通过这个界面&#xff0c;用户可以与聊天机器人进行交互&#xff0c;并查看机器人的回答。 C:\pythoncode\blog\static_16919367030710594_SparkApi_Python\testui.py 准备…

Flutter:简单搞一个内容高亮

内容高亮并不陌生&#xff0c;特别是在搜索内容页面&#xff0c;可以说四处可见&#xff0c;就拿掘金这个应用而言&#xff0c;针对某一个关键字&#xff0c;我们搜索之后&#xff0c;与关键字相同的内容&#xff0c;则会高亮展示&#xff0c;如下图所示&#xff1a; 如上的效果…

安装Vue_dev_tools

Vue控制台出现Download the Vue Devtools extension for a better development experience: 下载Vue_dev_tools,这里给出网盘链接&#xff0c;有Vue2和Vue3的&#xff0c;dev_tools 以Google浏览器为例 点击设置&#xff08;就是那三个点&#xff09;->扩展程序->管理扩…

pycharm上传项目到github,版本管理

前提&#xff1a;下载git 设置Git路径 登录Github 此时自动打开浏览器&#xff0c;并打开连接页面&#xff0c;点击 Authorize GitHub。登录&#xff1a; 创建本地仓库 提交到Github 填写初始提交相关信息 origin&#xff0c;它们只是远程服务器的一个别名&#xff0c;否则你就…

ATTCK覆盖度97.1%!360终端安全管理系统获赛可达认证

近日&#xff0c;国际知名第三方网络安全检测服务机构——赛可达实验室&#xff08;SKD Labs&#xff09;发布最新测试报告&#xff0c;360终端安全管理系统以ATT&CK V12框架攻击技术覆盖面377个、覆盖度97.1%&#xff0c;勒索病毒、挖矿病毒检出率100%&#xff0c;误报率0…

MFC140.dll缺失的修复方法,安装MFC140.dll文件

大家好&#xff0c;今天我要和大家分享的是如何正确安装和使用MFC140.dll。MFC140.dll是一种常见的动态链接库文件&#xff0c;它是Microsoft Foundation Classes(MFC)的一部分&#xff0c;被广泛应用于Windows操作系统中的各种应用程序中。在本文中&#xff0c;我们将详细介绍…

【C++入门到精通】C++入门 —— 容器适配器、stack和queue(STL)

阅读导航 前言stack1. stack概念2. stack特点3. stack使用 queue1. queue概念2. queue特点3. queue使用 容器适配器1. 什么是适配器2. STL标准库中stack和queue的底层结构3. STL标准库中对于stack和queue的模拟实现⭕stack的模拟实现⭕stack的模拟实现 总结温馨提示 前言 文章…

微信小程序:模板使用

目录 模板的优点&#xff1a; 一、静态模板创建 二、静态模板使用 1.*.wxml引入模板 2.模板使用 3.*.wxss引入模板的样式 三、动态模板创建 四、动态模板使用 1.*.wxml引入模板 2.模板使用 3.*.js定义动态数据 五、结果展示 总结 模板的优点&#xff1a; 有利于保持网…