关于编写JavaScript的课程并从Clojurescript反应

2021-05-09 05:23:28

最近,我在Reify Health的软件工程师中开始了新的作用。与我所拥有的任何其他角色不同,我们的产品堆栈的一大部分是在Clojure和Clojurescript中编写的。值得庆幸的是,我过去几年作为与反应的JS / TS开发,因为它已经采用和欣赏了一个非常功能的风格。 Clojurescript在JavaScript中解锁了全新的生产力水平并反应。特别是,它已经关闭了疼痛点的图案,并允许JavaScript没有优雅地表达的新范式。

与JS不同,Clojure是一个LISP,语法要少得多。想宣布一下吗?

通过很少的语法,我是不是意味着它需要多少个字符的代码高尔夫球。我的意思是表达中指所需的符号数量。在Clojure中,语法很大程度上是括号和功能。有areamso @符号用于表达异步行为。我喜欢它,因为在理解程序正在做的事情方面有没有人的认知负荷。

反应有很多管理州的方法。受欢迎的人包括useContext的Usestate和UserDuce。还有像Mobx和Reduxthat等图书馆,强制一条路径。 React在Clojurescript中有一种称为试剂的包装器,其使用所谓的R /原子。一个对比:

虽然微不足道的例子,这里展示的是,在Clojurescript中工作时,一个人不需要达到上下文的上下文。如果一个不喜欢clojurescript r /原子,它们不必使用它们的asclojurescript有能力与JavaScript代码互操作。使用挂钩,使用您喜爱的组件库!

Clojurescript试剂应用程序通常利用两个图书馆在前端管理状态:Fulcro和Re-Frame。我们将专注于致战的重新框架方法,因为它类似于流行的,但通常的诽谤模式使用Inthe React Unighte:通量通过Redux。

为什么人们会使用像redux这样的东西? Redux创建一个全局状态商店,让我们调度操作更新它,并在数据存储中创建订阅以读取它。状态是通过返回更新状态的新对象的reducer更新。在更新的值上完成了浅的比较,必须不断完成SOIT。在不同的上下文和/或组件中,开发人员只需管理它即可将其Allat Allat Allat All All Allows overthe overs overs。这不是多少"传统"应用程序多年来设计。

Warning: Can only detect less than 5000 characters

那个'只有重新框架可以作为开发人员提供的开头。它具有重新框架-10x,RockSolid稳定API和梦幻般的文档!

我第一次爱上了Scala工作时的不可变形和功能规划。它对我来说很令人着迷,可以基于数据的顶部具有应用bean表达式。通过避免可能的突变,evenc完,方案如此易于理由。反应允许一个在前端上的激情。但是,javascript在某种程度上让你用后面的一只手。它只有两个具有FirstClass Unmutibility的数据类型:对象和数组。可以说,第一类ImmutilityAso确实存在于特征的子集中,例如传播语法和阵列' s .slice。虽然JavaScript还具有其他数据类型,但诸如集合,而且它的设计是为了它是可变的。首先可以拥有第一个ClassPerformant的不可变数据结构和一个奇妙的标准库,以便更加ulatethem,并在浏览器中运行它?再次输入:clojurescript。

Clojurescript,虽然实施Clojure' s核心库,给伙伴们给所有的Clojure' s数据结构。它们周围的集合和格式纤维化尤其强大。关键是在引擎盖下,它们仅使用如结构共享的技术进行了不可动态的,使它们更加表现,而不是刚刚在对象上进行特工。有些图书馆如immutablejs,允许forfolks获得很多这些工具,但在支持和文档方面使其成为Luginalis的Languageis。允许琐事以琐碎的方式从诸如更新对象中的嵌套值,不断地。

const newobj = {... obj,我:{... obj。我,j:{... obj。一世 。 j,k:obj。一世 。 j。 K + 1}}};

尽管康流'有点值得拥有大量括号的声誉,但Clojure更新是更简单的!这仅仅是开始。 assocer具有比像传播和添加新密钥或对象的东西的人体工程学.Assign,自Clojurescript是一个编译的语言以来,它更加表现。虽然,clojurescript编译为javascript,但是编译一个人编写代码的代码更远的声明性。 javascriptthat由Clojurescript输出甚至由Google' S ClosureCompiler造成高效的来源优化。

有趣的是,反应'原作者乔丹沃尔克必须有点达成一些戏剧,因为在反应之后,他继续创建一个名为原因的功能不变性,也可以编译javascript。虽然原因是所有帐户的奇妙,但它不是我写作的😉。

在2019年的Reactathon,我记得有人打电话给JSX:"门户药物反应"(CAN' T Recall召回谁说它,并且Don' T有5个小时重新观看它) 。它可以很容易地接收一个人知道一点JavaScript和HTML的人。然而,HTML太宣告了S表达式,以高效的不确定DOM。事实上,在使用CLOJURESCRIPT之后,我不认为JavaVascript甚至有语言工具优雅地构建S表达式。在Web平台上构建的MonyProducts opped to Developers Technologies编写代码:

反应使开发人员有机会在javascript文件中写入所有这些东西。例如,可以编写一个非常简单的组件。

有能力在JavaScriptmakes中编写看起来像HTML的东西,很容易学习和工作。但是,XML是一个非常糟糕的数据类型用于此问题。 JSX实际上被转换为功能范围。特别是,这是通过反应完成的。在三个论点中进行了创造的创造:

嗯,位置论点!什么是JavaScript中存在的数据类型,以至于我们的位置?阵可以像那个按钮一样......

这是曾经探索过JSX的替代品吗?虽然Dumbed Down,它确实有借助于数据结构,其具有比JSX更容易的Ableto解析。但是,由于JavaScript没有充满虚弱的强弱性,以便用表达式创建数据,因此开发人员并没有真正获得任何东西。

人们可以写类似于立即调用的函数表达式(Iife),以努力使这种更加表达:

JSX已经有足够的丑陋,添加了一个可怜的人可以让事情变得令人困惑,也许在将来更加困难到调试。人们也可以是Makeanother组件,但这将是更多的样板和维护代码。这不是反应的问题。反应希望你把表达式相提到。从技术上讲,可以处理嵌套的三元运算符,但事件变得更加令人困惑。

如前所述的Clojure采用了使用向量的态度(类似于JS中的ANARRAY)以表达标记,而不是以名为HICcup的格式的XML。这可能会成为Clojure的甚至更密集的码代码:

Clojure可以拉开它,因为与JavaScript不同,一切都是Anexpression!此外,与这些例子中的许多例子一样,这只是贡献。我在过去真正想做的是根据加载,数据和错误状态定义枚举以代表应用程序。然后,我在枚举上写入枚举的JSX内部的交换机语句呈现。另一方面,Clojure给允许人们使用COND或案例陈述以便以演示范围内使用这些功能。

然而,对于我们仍然做爱JavaScript的人(是的,我做了!),有一个模式匹配的提案,TC-39在他们的雷达上有一天,我的梦想是JSX里面的交换机语句的梦想将实现。

我决定进入Clojure Shop的原因之一是我真的很合理的功能编程模型,我想学习更多使用一个选框的人来做。即使你不打算在生产中使用Clojure orclojurescript,它肯定是一个有用的练习,以便在他们身上尝试建立官能透明度uis。尝试使用CLOJURESCRICT和试剂以勉强支持任何类型的可变性的语言,以及如何将未来写作的JavaScript。以前的Workycript撰写了我的类型,并欣赏了规范的运行时检查。利用挑选特定工具,许多优势/权衡。节点通常在我的工具带中,以便我在浏览器和服务器上充分一种语言。 Clojure传统地用于堆叠的后端,Clojurescript是让它在前端闪耀的东西。许多人会说Clojure实际上在后面的真实性地与它坐在JVM之上的后端。与Nodeis一样方便,它与JVM一样快,它也不是支持技术的多线程。

如果您想专业地与Clojure和Clojurescript合作,我们还在Reify Health!虽然你没有在加入之前了解Clojure(我没有,但是,有一个♥for For upernalprogramming总是一个加号!