前端工程师的唯一选择:JavaScript真功夫粹鍊

前端工程师的唯一选择:JavaScript真功夫粹鍊 pdf epub mobi txt 电子书 下载 2025

图书标签:
  • JavaScript
  • 前端开发
  • 前端工程
  • Web开发
  • 编程
  • 技术
  • 进阶
  • 实战
  • 核心
  • 必备
想要找书就要到 小特书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

在后端,函数式语言层出不穷。在前端,函数是最后的边界也已经被渐渐打破。Scala的Scala.js、Clojure的ClojureScript都试图同购移向前端。原生JavaScript其实也可透过丰富的函数库,让前端的函数式程式设计一样的舒适和优雅。

  本书涵盖大部分函数式程式设计思想,包括JavaScript的函数式支援,Clojure风格的集合、递回、函数组合、巨集、模式比对、实用的Monads,以及前端的併发程式设计。

  适用:想要了解函数式程式设计的JavaScript程式师,或想学习JavaScript的函数式程式师。

著者信息

作者简介

欧阳继超


  本书作者欧阳继超为Thoughtworks高级谘询师,活跃开源贡献者 (github.com / jcouyang),热爱程式设计与写作。

图书目录

Chapter 01 函数式JavaScript
1.1 JavaScript也是函数式语言吗
1.2 作为函数式语言,JavaScript还差些什么
1.3 Underscore你错了
1.4 小结

Chapter 02 集合
2.1 集合的使用
2.2 持久性资料结构
2.3 不可变性
2.4 惰性序列
2.5 小结

Chapter 03 递回
3.1 不可变性与递回
3.2 柯里悖论
3.3 尾递回最佳化
3.4 蹦跳乐园(Trampoline)
3.5 小结

Chapter 04 函数组合
4.1 Underscore到底做错了什么
4.2 柯里化有什么用
4.3 Transducer
4.4 组合与管线
4.5 小结

Chapter 05 Macro巨集
5.1 什么是REPL
5.2 为什么要语法糖
5.3 Sweet.js
5.4 Infi x Macro和Operator
5.5 小结

Chapter 06 模式比对
6.1 Destructure
6.2 Arity函数
6.3 Fizz Buzz
6.4 代数资料类型(ADT)
6.5 小结

Chapter 07 Monadic程式设计
7.1 链式唿叫
7.2 Monad
7.3 走钢丝
7.4 Monad在JavaScript中的应用
7.5 Reactive程式设计
7.6 小结

Chapter 08 平行处理程式设计
8.1 什么是平行处理
8.2 通讯顺序处理程序(CSP)
8.3 使用Generator实现CSP
8.4 实战CSP
8.5 小结

参考资料

图书序言



  函数式程式设计可以说是非常古老的程式设计方式,但是近年来函数式程式设计越来越受到人们的关注。不管是Google力推的Go、学术派的Scala与Haskell,还是Lisp的新语言Clojure,这些新的函数式程式语言都越来越受到人们的关注。

  当然不仅是后端函数式程式语言层出不穷,前端也不甘示弱。虽然前端浏览器只支援一种语言——JavaScript,但是能支援函数式程式设计的JavaScript函数库越来越多,例如Functional JavaScript、Underscore、lodash等。不仅如此,还有一些能编译成JavaScript的语言,能让前端的函数式程式设计发挥到极致,例如Haskell的PureScript、Scala的Scalajs、Clojure的ClojureScript。

  我上二段都以Clojure结尾,是因为我喜欢把重点留到最后。Clojure独特于其他语言,它既是一种新的语言、一种函数式程式设计范式的语言,又流淌着古老的血液——Lisp。这是我选择用Clojure来诠释函数式程式设计的原因之一。

  为什么我要选JavaScript作为函数式程式设计的目标?Michael Fogus用200多页向大家展示了不一样的Functional JavaScript程式设计方式,可惜Fogus作为ClojureScript编译器的贡献者,竟然选择了Underscore作为函数库,直接导致无法完全展示JavaScript所能达到的函数式程式设计能力。有趣的是,ClojureScript的作者把ClojureScript的不可变(Immutable)资料结构移植到了JavaScript,这彻底将JavaScript 的函数式程式设计提升到用其他函数库都完成不了的新高度。不仅如此,Mozilla的Sweet.js(https://github.com/mozilla/sweet.js)更是完成了另一个突破——JavaScript的macro,它虽然不能算是函数式的概念,但也算是Lisp语言的一项独门绝技了。

  这一切的一切,都让我忍不住要帮Fogus出一本续集,用JavaScript实现其他函数式程式语言如Clojure甚至是Haskell,让大家进一步感受用JavaScript这门不完美的语言同样可以撰写出优雅的函数式程式,以不一样的方式思考和解决问题。于是不管你是想转行JavaScript的Clojure开发者,还是想了解Clojure或函数式程式设计的JavaScript开发者,都可以在此找到一些启发。

  本书的组织结构

  第1章
  将介绍JavaScript的基本函数式背景,简要地介绍为什么要关心函数式程式设计,为什么说Underscore不够函数式,JavaScript要作为完整的函数式语言还缺些什么?

  第2章
  主要介绍Clojure的集合资料结构。这是本书极重要的章节,可以说函数式程式设计最基本、最重要的就是集合操作。本章涵盖如何操作集合、惰性求值与惰性序列。

  第3章
  在了解持久性资料结构后,我们可能会产生疑惑,如果资料结构都是不可变的,那么循环该怎么写呢?本章就是要解开各种使用不可变资料结构的疑惑,用这些不可变资料结构可以切换一种程式设计的思维方式。

  第4章
  nderscore并不利于函数组合,但是函数组合其实是函数式程式设计最重要的思想。本章将详细介绍为什么说Underscore错了,而为什么要喜欢上柯里化,以及Clojure 1.7新推出的Transducer又是如何帮助我们更容易组合出更高效的函数。

  第5章
  我极不愿意把Macro翻译成巨集。巨集特别容易让人以为是C 语言里面那个#define巨集,虽然都是巨集,但其实说的Macro不是一个等级的。Macro是Lisp语言之所以特别的原因之一。本章我们就来看看到底什么是、为什么,以及如何在JavaScript中使用Macro。

  第6章
  这里说的模式比对包含两种:一种是按位置或key比对集合,取出对应资料。另一种是Haskell风格的对函数参数的模式比对。本章篇幅比较小,因为模式比对并不是Clojure(也不是JavaScript)的主要模式,尽管在一些有强大类型系统的函数式语言(Scala、Haskell)中比较重要。

  第7章
  Monad这个范畴里出来的神秘玩意,但你可能没有注意,其实这在前端世界早都被玩腻了。本章将介绍Monad和它的朋友们,并且将带你体验JavaScript的Promise,以及Reactive程式设计。

  第8章
  平行处理程式设计一直是令人头疼的程式设计方式,直到Clojure和Go的出现,彻底改变了我们平行处理程式设计的方式。而对于单执行绪的JavaScript,以事件循环为基础的平行处理模型也一直困扰着我们,到底能从Clojure学些什么,可以使我们的前端平行处理程式设计之路更顺畅一些呢?本章将带你熟悉平行处理、JavaScript的平行处理模型,以及CSP平行处理模型。

图书试读

用户评价

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 ttbooks.qciss.net All Rights Reserved. 小特书站 版权所有