热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一、介绍和安装

一、介绍和安装欢迎来到JavaScript中反应式(函数式)编程的精彩世界!在这本书里,我们

一、介绍和安装

欢迎来到 Javascript 中反应式(函数式)编程的精彩世界!在这本书里,我们将讲述 Javascript 的好的部分,尽管我们不会虔诚地遵循它。我们将涵盖函数式编程、反应式编程和 ReactJS 库,并将所有这些都集成到带有 Javascript 的函数式反应式编程中。如果你打算学习反应式编程,我们建议你认真考虑函数式反应式编程,包括尽可能多地学习函数式编程。在这种情况下,函数式反应式编程的整体不仅仅是其各部分的总和。我们将把反应式编程应用到 Javascript 用户界面开发中。用户界面是函数式反应式编程 ( FRP )真正闪耀的一个领域。

本章将涉及的主题如下:


  • 10,000 英尺长的主题概述,包括:

    • 用户界面编程的一种更简单方法的讨论

    • 编程范例的简要讨论,如函数式和反应式编程



  • 本书各章的概述

  • 看看如何安装本书过程中使用的一些工具


万英尺纵览

有很多事情可以陈述,但是(函数式)反应式编程可能比你想象的要容易。如今,许多关于函数式反应式编程的文章令人生畏,就像几年前的闭包指令一样。

处理用户界面编程的更简单方法

多年前,当我第一次开始研究 Javascript 的时候,我选择了一个站点,并从其中字面上拿走了我需要理解的所有东西来执行面向对象的信息隐藏,也就是如何创建一个有私有字段的 Javascript 对象。在放弃之前,我可能看了两三章理论计算机科学和 10-15%的介绍。然后我看到使用闭包在简单的猴子看,猴子做基础上创建一个具有私有字段的对象是多么容易:

var counter = (function() {
var value = 0;
return {
get_value: function() {
return value;
},
increment_value: function() {
value += 1;
}
}
})();

现在,函数式反应式编程处于几年前 Javascript 闭包的状态。在你可以开始反应式编程之前,你必须阅读的理论数量令人震惊,而且大部分文献都是博士阅读水平。那是坏消息。但好消息是,你不必费力读那么多书。

这本书的目的是提供一些类似于猴子看,猴子做的方式来传达如何使用闭包来制作一个带有私有字段的 Javascript 对象。理论本身并不坏,引入理论进行讨论也不是问题,但作为做简单事情的代价,做一篇成熟的论文的理论支持是一个问题。

我们希望这本书能让你理解为什么用 Javascript 构建游戏用户界面比用 jQuery 更容易。

编程范式

周围有多种编程范式,并不是所有的都是互斥的。许多编程语言都是多参数语言,支持多种范式的使用,不仅包括 Javascript,还包括 OCaml、PHP、Python 和 Perl 等。

请注意,您至少可以有时使用没有明确设计支持的语言的范例。面向对象编程最初不是为专门支持面向对象编程的语言(如 Java 或 Ruby)制定的,而是作为一门工程学科,最初用于面向对象编程之前的语言。

在编程范例中,我们现在有以下几种:


  • 面向方面编程:有人建议程序员的专业发展从过程编程走向面向对象编程,再走向面向方面编程,最后走向函数式编程。面向方面关注的一个典型例子是日志记录,这是一个在程序中以幼稚的用法传播的方面。面向方面编程处理编程的交叉方面,例如安全性、状态的诊断暴露和日志记录。

  • 声明式编程:函数式反应式编程的一个关键概念是它是声明性的,而不是命令性的。换句话说, c = a + b 并不的意思是取 a 的现值,加上 b 的现值,将二者之和存入 c 。相反,我们在电子表格中声明一种持久的关系,有点像 C1 = A1 + B1 。如果 A1B1 发生变化, C1 会立即受到变化的影响。存储在 C1 中的不是赋值时 A1 的值加上 B1 的值,而是更持久的值,可以通过按需打印的方式从中获得单个值。

  • 防御性编程:类似于防御性驾驶,防御性编码是指当被赋予有缺陷的东西时,编写行为正确的代码。函数式反应式编程是一种方法,可以在网络问题和非理想的现实条件下正确运行或优雅地降级。

  • 函数编程:这里函数这个术语有它的数学意义而不是编程意义。在命令式编程中,函数可以(而且最常见的是,它们确实)操纵状态。因此,init()函数可以初始化程序最初需要运行的所有数据。函数是接受零个或多个输入并返回结果的东西。比如 f(x) = 3x+1g(x) = sin(x)h(x,y) = x'(y) (在 yx 的导数)都是数学函数;它们都不需要对有状态数据进行任何操作。纯函数是一个数学定义下的函数,不包括告诉如何处理状态。函数式编程还允许并且通常包括(最后一个基于导数的例子)更高阶的函数,或者作用于函数的函数(在微积分中,导数或积分代表更高阶的函数,迭代积分包括以另一个更高阶的函数作为输入的更高阶的函数)。解决方案集中在抽象函数上的问题对计算机科学类型来说比商业世界中真正使用的东西更有吸引力。这里探讨的高阶函数将相对具体。你不需要一直使用高阶函数,一旦你掌握了核心概念,它们就不难使用了。

  • 命令式编程:命令式编程是一种常见的编程方式,对于大多数第一次学习命令式编程的程序员来说,这似乎是最自然的工作方式。函数式反应式编程的营销提案包括这种基本方法的一个实时替代方案。在函数式反应式编程的声明性编程、函数式编程中的纯函数(包括高阶函数)以及反应式编程的时间序列中,可以找到对看似自然的命令式编程倾向的替代。

  • 信息隐藏:史蒂夫·麦康奈尔的代码完成描述了几种方法,并告诉我们哪种方法对于不同的设置是最佳的(例如,程序编程的最佳点是在比面向对象编程更小的项目上)。对于单独的信息隐藏,他的建议是尽可能使用这个。在一般的信息隐藏开发中,一个大项目是通过在更大的区域内隔离秘密来实现的,而更大的秘密是通过隔离子秘密来划分的。很大一部分过程编程、面向对象编程和函数编程都是为了便于信息隐藏。信息隐藏是德米特里定律背后的软件工程问题,例如,一个方法调用(foo.bar())中最多可以有一个点,但不能有两个(foo.baz.bar())

  • 面向对象编程:一个程序被分割成对象,而不是一个单片的架构。这些对象有它们自己的方法和领域,并且可能反过来被分割成更多的对象。这为比过程编程更大的项目提供了可接受的信息隐藏级别,即使面向对象编程或多或少是从过程编程开始并建立在过程编程之上的。

  • 模式:模式不是一个好软件的配方,但是在更高层次的人类抽象中,它们提供了一种谈论最佳重复解决方案的方式,以避免从零开始重新发明已经解决的问题。此外,特定的模式引人注目,包括 MVC 和现在的观察者模式,虽然是一个基本要素,但在反应式编程方面经常没有被提及。

  • 过程编程:过程编程是所提到的最古老的方法之一,它旨在为更古老的基于后藤的流控制所培养的意面代码提供某种秩序。也许我们可以批评过程编程在面向对象编程、面向方面编程和面向对象设计模式可用时做得不够。当你有工具可以从 goto 的老鼠窝、数据结构的 goto 指针等方面推动程序编程更进一步时,从程序编程继续前进是正确的。

  • 反应式编程:假设函数式编程在很大程度上是函数具有一级状态,并且可以生成更高阶的函数(作用于其他函数作为输入的函数)的编程。然后,反应式编程在很大程度上是编程,其中时间序列(随着时间的推移具有不同值的函数)具有一流的状态。对于音乐、游戏、用户界面和其他一些用例,计算当前的正确值是反应式编程的亮点。

  • 函数式反应式编程:函数式反应式编程是建立在功能积木上的反应式编程,其中功能和时间序列都是一级实体。有一些有用的、令人惊讶的简单函数,它们作用于一个时间序列,从而提供另一个时间序列(这些序列中的任何一个都可以被时间序列上的其他函数作用)。函数式反应式编程的一个主要卖点是,它提供了一种比直接进入回调地狱更优雅、更易维护的方法。


安装所需工具

如果不久前还没有安装 Chrome 和 Node.js 的话,许多读者会对简单地安装它们感到足够舒服。对于那些更喜欢逐步指导的人来说,下面是安装适当软件的细节。

谷歌 Chrome 可以从http://google.com/chrome安装。请注意,对于某些 Linux 发行版,Chrome 可能会也可能不会从您的包管理器中获得。谷歌 Chrome 是一个明显的选择,可以考虑在发行版的包中包含一些东西,但是许可问题可能会因为 Chrome 的某些部分而将其列为非免费的,这意味着就发行版维护者而言,您可能会被欢迎使用它,但是我们不愿意将其包含在仅免费的包存储库中。

Node.js 可从http://nodejs.org/download获得。如果你运行的是 Linux,可能最好通过你的包管理器获取。注意,Node.js 自带包管理器 npm,可以用来下载 Node.js 下可以使用的包。

适用于反应堆的启动套件可从http://facebook.github.io/react/downloads.html获得。

下面的说明是针对 Windows 8.1 给出的(我比较喜欢用 Mac 或者 Linux 开发,但是是作为通用的通用语言为 Windows 8.1 写的)。

安装谷歌 Chrome

我们将使用谷歌浏览器作为主要参考浏览器:


  1. To download it, go to http://google.com/chrome, and click on the Download now button to the left, towards the bottom, as shown here:

    Installing Google Chrome


  2. Next, click on the Accept and Install button down and to the right, as shown in the following screenshot:

    Installing Google Chrome


  3. After that, click on the Run button when asked whether you want to run or save the installer, as shown here:

    Installing Google Chrome


  4. Next, authorize Chrome's installer to make changes to the system, as shown in the following screenshot:

    Installing Google Chrome


  5. Then click on the Next button to install Chrome, as shown in the following screenshot:

    Installing Google Chrome


  6. Wait a minute for it to install and then if you are willing, set Chrome as your default browser:

    Installing Google Chrome


而就是这样!

安装 Node.js

安装 Node.js 很简单并且可以很容易地开始使用 Javascript 作为唯一的语言来服务 HTTP。


  1. Go to http://nodejs.org/download:

    Installing Node.js


  2. Click on the Windows Installer and wait for the installer to download. Then click on the bottom-left part of the window, as shown in this screenshot:

    Installing Node.js


  3. When the installer starts, click on Next, as follows:

    Installing Node.js


  4. Then click on the checkbox to accept the terms of the agreement, as shown here:

    Installing Node.js


  5. After that, click on the Next button to continue, as shown in the following screenshot:

    Installing Node.js


  6. When asked where to install the software, click on the Next button, as shown in this screenshot:

    Installing Node.js


  7. Then click on Next to move forward, as shown in the next screenshot. Customize the features if you want to:

    Installing Node.js


  8. After that, click on the Install button to go ahead with the installation, as shown here:

    Installing Node.js


  9. Finally, click on the Finish button to finish installing Node.js, as shown in this screenshot:

    Installing Node.js


  10. Authorize the installer to make changes to your computer, shown as follows:

    Installing Node.js



安装反应堆的启动器套件

要安装起动机套件,请执行以下步骤:


  1. Go to http://facebook.github.io/react/downloads.html and you will see a screen similar to the following screenshot:

    Installing the Starter Kit for ReactJS


  2. 点击 下载入门套件 0.12.0 开始下载(左下角可见),如前面截图所示。


  3. You will see a ZIP file downloaded at the bottom:

    Installing the Starter Kit for ReactJS


  4. From here, you should be able to explore the contents of the ZIP file:

    Installing the Starter Kit for ReactJS



总结

在本章中,我们对编程范例进行了简要概述,以建议函数式反应式编程可能适合的地方,并安装了基本工具。

我们将在下一章继续讨论 Javascript。Node.js 的基础在附录中讨论。


推荐阅读
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 利用 JavaScript 和 Node.js 验证时间的有效性
    本文探讨了如何使用 JavaScript 和 Node.js 验证时间的有效性。通过编写一个 `isTime` 函数,我们可以确保输入的时间格式正确且有效。该函数利用正则表达式匹配时间字符串,检查其是否符合常见的日期时间格式,如 `YYYY-MM-DD` 或 `HH:MM:SS`。此外,我们还介绍了如何处理不同时间格式的转换和验证,以提高代码的健壮性和可靠性。 ... [详细]
  • 本文详细探讨了几种常用的Java后端开发框架组合及其具体应用场景。通过对比分析Spring Boot、MyBatis、Hibernate等框架的特点和优势,结合实际项目需求,为开发者提供了选择合适框架组合的参考依据。同时,文章还介绍了这些框架在微服务架构中的应用,帮助读者更好地理解和运用这些技术。 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
author-avatar
cresslyty_723
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有