随笔分类 -  Clojure/ClojureScript

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