Reason对于大多数前端开发人员可能相对比较陌生。所以在开始之前有必要介绍一下 Reason是什么。为什么要使用 Reason。
Reason 是什么?
Reason并不是一门新的语言,而是一种语法和链工具,使用 BuckleScript 将 OCaml 编译成 js。Reason 和 ReasonReact 由 Facebook ReactJs 的开发组开发和维护的。
为什么选择 Reason
Reason是基于 OCaml 而来,语法上对前端开发者(js使用者)更为友好。
1) Reason 支持 mutable 逻辑和数据结构
2) 由于是强类型语言,因此对浏览器的JIT编译(如运行时推导类型)友好,提升运行时性能
3) BuckleScript 并不是像其他编译简单地将某种语言编译为 js,而是对函数式编程做了很多优化
4) BuckleScript 的编译速度非常快
我们通过官网提供 try 来体验一下 Reason
当打开 try 我们可以看到一个界面
左上为 Reason 代码,我们在这里写 reason 代码
右上为 Reason 编译后的 javascript 代码
左下为 Ocaml 代码
右下为输出
定义数据类型 animal 接受 Cat 和 Dog 类型
定义一个 speak 方法接受 animal 类型作为参数,speak 方法会根据传入 animal 类型(Cat 或 Dog)不同做不同操作。这里用 Js.log 打印。
这里通过 ++ 连接变量和字符串,我们将 name 添加到输出。
我们也可以对 Cat("anotherCat"),确定了 name 的 Cat 进行确定操作,如上图。但是注意到在左下有提示。
要去掉 warn ,我需要调整一下顺序,将确定 name Cat("anthorCat“) 放在 Cat(name)上面,之所以这样做应该不难理解。好的高级语言是让程序员 enjoy coding
我们现在用 Reason 实现组合函数,也就是通过一个函数包裹另一个函数来决定函数执行顺序。注释中会先执行 g(x) 执行的结果作为 f 函数的参数。Reason 让组合函数定义变得有趣且合理看一看 code 吧。定义函数 (
执行结果如下图
也可以定义一个 f 函数接受(
通过调整函数顺序来调整执行顺序。
也可以简化为 f1 = inc
也可以链式执行一系列函数,是不是很酷。
今天到这里吧。感谢大家关注。
领取专属 10元无门槛券
私享最新 技术干货