随笔分类 - Clojure/ClojureScript
摘要:前言 在上一篇 "《前端魔法堂——异常不仅仅是try/catch》" 中我们描述出一副异常及如何捕获异常的画像,但仅仅如此而已。试想一下,我们穷尽一切捕获异常实例,然后仅仅为告诉用户,运维和开发人员页面报了一个哪个哪个类型的错误吗?答案是否定的。我们的目的是收集 刚刚足够 的现场证据,好
阅读全文
摘要:前言 本文是学习Thinking in React这一章后的记录,并且用Reagent实现其中的示例。 概要 1. "构造恰当的数据结构" 2. "从静态非交互版本开始" 3. "追加交互代码" 一、构造恰当的数据结构 Since you’re often displaying a JS
阅读全文
摘要:前言 话说"动态类型一时爽,代码重构火葬场",虽然有很多不同的意见( "请参考" ),但我们看到势头强劲的TypeScript和Flow.js,也能感知到静态类型在某程度上能帮助我们写出更健壮的代码(当然要基于充分的单元测试上啦)。 ClojureScript与JavaScr
阅读全文
摘要:前言 磨刀不误砍柴工,本篇将介绍如何搭建Chrome插件的ClojureScript开发环境。 具体工具栈:vim(paredit,tslime,vim clojure static,vim fireplace) + leiningen(lein cljsbuild,lein doo,l
阅读全文
摘要:前言 动态类型语言,少了静态类型语言必须声明变量类型的累赘,但也缺失了编译时类型检查和编译时优化的好处。cljs虽然作为动态类型语言,但其提供Metadata让我们在必要的时候可选择地补充类型提示,以便提高代码可读性和供编译器优化使用。除了上述以外,Metadata还让我们在不影响对象本
阅读全文
摘要:前言 在项目中我们一般会为实际问题域定义领域数据模型,譬如开发VDOM时自然而言就会定义个VNode数据类型,用于打包存储、操作相关数据。clj/cljs不单内置了 、`Vector Set Map deftype defrecord`让我们可以自定义数据结构,以满足实际开发需求。 定义
阅读全文
摘要:前言 作为一门函数式编程语言,深入了解函数的定义和使用自然是十分重要的事情,下面我们一起来学习吧! 3种基础定义方法 定义语法 示例 定义语法 示例 其实 是个macro,最终会展开为 这种定义方式。因此后面的均以 这种形式作说明。 Lambda表达式 定义语法 示例 注意: 1. La
阅读全文
摘要:前言 每逢学习一个新的语言时总要先了解这门语言支持的数据类型,因为数据类型决定这门语言所针对的问题域,像Bash那样内置只支持字符串的脚步明显就是用于文本处理啦。而数据类型又分为标量类型(Scalar)、结构类型(Struct)和集合类型(Collection),标题中的简单类型实质就是
阅读全文
摘要:前言 习惯了Ramda.js就会潜意识地认为函数均已柯里化,然后就可以随心所欲的用函数生成函数,或者使用compose组合多个函数来生成一个新函数。如下 ES6的arrow function让我们轻易写出柯里化的函数(当然使用Ramda.js会更轻松),若换成ES5就蛋痛很多
阅读全文
摘要:前言 一个cljs文件定义一个命名空间,通过命名空间可以有效组织代码,这是构建大型系统必备的基础设施。本篇我们就深入理解cljs中的命名空间吧! 好习惯从"头"开始 每个cljs文件首行非注释的内容必定如下 而当前的cljs文件路径为 ,很明显命名空间与源码文件路径是一一对应的,对应规则
阅读全文
摘要:前言 书接上一回,在了解cljs基本语法后并在clojurescript.net的奇特错误提示后,我们必须痛定思痛地搭建一个本地的开发环境,以便后续深入地学习cljs。 现有的构建工具 由于浏览器仅能运行JS,而无法直接运行cljs,因此我们需要搭建一个预编译环境将cljs编
阅读全文
摘要:前言 两年多前知道cljs的存在时十分兴奋,但因为工作中根本用不上,国内也没有专门的职位于是搁置了对其的探索。而近一两年来又刮起了函数式编程的风潮,恰逢有幸主理新项目的前端架构,于是引入Ramda.js来疗藉心中压抑已久的渴望,谁知一发不可收拾,于是抛弃所有利益的考虑,遵循内心,好好追逐
阅读全文
摘要:前言 前几天用户反映在录入资料时一不小心错按Backspace键,就会直接回退到是一个页面,导致之前辛辛苦苦录入的资料全部丢失了。哦?居然还有这种情况。下面我们来一起探讨一下吧! Windows系统下独有的行为 Windows下的IE、FireFox和Chrome 52之前的
阅读全文
摘要:一、前言 当看到Lisp等函数式编程语言的语法是(say (concat "hello" "world"))这样的时候,我就有种深入学习的冲动,因为它的语法和自己一直使用的Java、C#都不同,酷比了!(我承认我是语法控^_^)又由于我主要...
阅读全文