redux-form (V7.4.2)笔记(三)之流简介

  

为什么要学习redux-form ?

  

我们知道,react-redux为反应开发提供了科学的存储管理方案。另一方面,类似语义用户界面与材料界面,Ant-UI等则提供了比较全面的基于反应组件框架的UI解决方案。但问题在于,后者提供的UI方案还有很大的局限性,特别是对于形式表单的各种应用需求支持方面。为此,相对于简单的表单应用,为了减少重复冗余的代码,我们可以去使用redux-form-utils库,此库能利用高阶组件的特性为表单的每个字段提供价值和onChange等必须值,而无需你手动创建。但是,对于复杂的表单,redux-form-utils库显得捉襟见肘;此时,转而利用redux-form即成为最佳方案。这是因为redux-form库除了提供表单必须的字段支持外,redux-form还能实现表单同步验证,异步验证甚至嵌套表单等复杂功能。

  

Javascript静态类型检查工具流

  

为什么存在和要使用流?要回答这个问题必须提起微软的打印稿语言。一提起打印稿,还不得不提起微软的JScript.JScript是由微软公司开发的活动脚本语言,是微软对ECMAScript规范的实现.JScript最初是随Internet Explorer 3.0于1996年8月发布。在网络程序员谈论Internet Explorer中的JavaScript的时候,他们实际上是指JScript。和其他活动脚本一样,它后来也被Windows脚本主机(WSH)和活动服务器页面所支持。典型的JScript源文件使用的扩展名是.js.JScript最新的版本是基于尚未定稿的ECMAScript4.0版规范的JScript . net,并且可以在微软的。net环境下编译.JScript在ECMA的规范上增加了许多特性。

  

打印稿是一种由微软开发的自由和开源的编程语言,它是JavaScript的一个超集,扩展了JavaScript的语法。现有JavaScript的代码可与打印稿一起工作无需任何修改,打印稿通过类型注解提供编译时的静态类型检查.TypeScript可处理已有JavaScript的代码,并只对其中的打印稿代码进行编译。

  

流是个JavaScript的静态类型检查工具,由Facebook出品的开源码项目,问世只有一年多,是个相当年轻的项目。简单来说,它是对比打印稿语言的解决方式. Flow本质上也只是个检查工具,它并不会自动修正代码中的错误,也不会强制说你没按照它的警告消息修正,就不会让你运行程序。当然,并没有要求什么时候一定要用这类的工具,只是这种作法可以让你的代码更具强健性与提高阅读性,也可以直接避去很多不必要的数据类型使用上的问题,这种开发方式目前在许多框架与函数库项目,或是JavaScript应以用为主的开发团队中都已经都是必用工具。

  

JavaScript是一种弱(动态)数据类型的语言,弱(动态)数据类型代表在代码中,变量或常量会自动依照赋值变更数据类型,而且类型种类也很少,这是直译式脚本语言的常见特性,但有可能是优点也是很大的缺点。优点是容易学习与使用,缺点是像开发者经常会因为赋值或传值的类型错误,造成不如预期的结果。有些时候在使用框架或函数库时,如果没有仔细看文件,亦或是文件写得不清不楚,也容易造成误用的情况。

  

这个缺点在应用规模化时,会显得更加严重。我们在开发团队的协同时,一般都是用详尽的文字说明,来降低这个问题的发生,但JS语言本身无法有效阻止这些问题。而且说明文件也需要花时间额外编写,其他的开发者阅读也需要花时间。在现今预先编译器流行的年代,像打印稿这样的强(静态)类的JavaScript超集语言就开始流行,用严格的角度,以JavaScript语言为基底,来重新打造另一套具有强(静态)类型特性的语言,就如同Java或c#这些语言一样,这也是为什么打印稿称自己是企业级的开发JavaScript解决方案。

  

打印稿自然有它的市场,但它有一些明显的问题,首先是JavaScript开发者需要再进一步学习,内容不少,也有一定陡峭的学习曲线,不过这还算小事情。重大的事情是需要把已经在使用的应用代码,都要整个改用打印稿代码语法,才能发挥完整的功用。这对很多已经有内部代码库的大型应用开发团队而言,将会是个重大的决定,因为如果不往全面重构的路走,将无法发挥强(静态)类型语言的最大效用。

  

所以许多现行的开源码函数库或框架,并不会直接使用打印稿作为代码的语言,另一方面当然因为是打印稿并非普及到一定程度的语言,社群上有热爱的粉丝也有不是那么支持的反对者。当然,打印稿也有它的优势,自从打印稿提出了DefinitelyTyped的解决方式之后,让现有的函数库能额外再定义出里面使用的类型,这也是另一个可以与现有框架与库相整合的方案,这让许多函数库与框架都提交定义档案,提供了另一种选择。另一个优势是,打印稿也是个活跃的开源码项目,发展到现在也有一段时间,算是逐渐成熟的项目。它的背后有微软公司的支持,在最近发布的知名的,全新打造过的Angular2框架中(由Google主导),也采用了打字稿作为基础的开发语言。

redux-form (V7.4.2)笔记(三)之流简介