ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

为什么 React 是声明式的

2022-09-09 10:05:36  阅读:180  来源: 互联网

标签:为什么 创建 编程 React 命令式 声明 我们


为什么 React 是声明式的

声明式和命令式有什么区别

前言

每次我们打开 反应 网站,我们可以看到 React 的介绍:

我们可以了解到 React 是 声明性的 哪个 **** 可以使我们的代码更可预测和更容易调试。我喜欢使用 React,并且几乎在我所有的项目中都使用它。但这让我感到困惑,什么是声明性的,你和我有同样的问题吗?

当我们谈论声明式时,也提到了命令式。声明式和命令式是两种总是会相互比较的编程范式。在这篇文章中,我将介绍这两种编程范式。

声明式和命令式的概念

我们可以从 维基百科

声明式编程是一种编程范式——一种构建计算机程序结构和元素的风格——它表达了计算的逻辑而不描述其控制流。

声明式编程侧重于 什么 程序应该完成 没有指定程序应该如何实现结果的所有细节。与这个词相比, 命令式编程侧重于描述程序如何逐步运行 ,而不是对其预期结果的高级描述。

“声明式与命令式”变成“什么与如何”,我们可以用一个例子来证明这个术语。当我们要创建一个新的 react 项目时,使用命令式的方式会是这样的:

  1. 创建一个空目录;
  2. 使用 npm 启动项目;
  3. 使用 npm 或 yarn install react、react-dom;
  4. 使用 npm 或 yarn install 构建/编译工具,如 webpack、babel;
  5. 创建一个 webpack 配置文件;

通过使用命令式的方式,它们可以帮助我们理解所有细节,但是如果我们需要频繁地重复这些步骤来创建项目,那就很烦人了。

如果我们使用声明式的方式,会很简单,只需要一步:

  1. npx 创建反应应用程序我的应用程序

通过使用声明式,我们不需要知道步骤,只需要关心我们想要做什么。

声明式和命令式的关系

众所周知,所有的高级语言都会被编译为 CPU 的指令,所以在某种程度上,声明式编程是在命令式编程之上的抽象层。

当我们谈论声明式编程或命令式编程时,我们需要定义一个特定的场景,因为声明式动作在某些情况下可能是命令式的。在上面的例子中,我们的场景是创建一个 React 项目。如果我们想批量创建项目,我们可以像下面的代码那样做:

 #!/bin/sh a=0  
  
 while [ $a -lt 10 ] # 创建 10 个项目  
 做  
 npx create-react-app my-app$a  
 a=`expr $a + 1`  
 完毕

虽然我们仍然使用 创建反应应用 创建反应应用程序,但这看起来可能是命令式编程。声明式和命令式的关系可能是这样的:

命令式代码可以组合成函数或库,就像声明式代码一样,开发人员使用它来实际编写软件。命令部分成为软件的实现细节。声明部分也可以抽象,在这种情况下,它将是一个命令部分。

声明式和命令式的关系可以帮助我们理解为什么 React 是声明式的,因为 React 提供了一种非常简单的方式来创建交互式 UI,而不是使用原生 JavaScript 来维护 dom,React 让我们只需要关心数据并且 UI 会自动更新而数据改变。

最后

在本文中,我们了解了声明式编程和命令式编程之间的区别。在我们的项目中建议使用声明式编程,因为代码将更具可读性和可理解性。

感谢您阅读到这里,希望这篇文章可以帮助到您。

参考

  1. c# — 编程中的声明式范式和命令式范式有什么区别? - 堆栈溢出
  2. 编程范式——维基百科
  3. 声明式编程——维基百科
  4. 命令式编程——维基百科

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/22826/48490909

标签:为什么,创建,编程,React,命令式,声明,我们
来源: https://www.cnblogs.com/amboke/p/16671713.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有