摘要: 前言  动态类型语言,少了静态类型语言必须声明变量类型的累赘,但也缺失了编译时类型检查和编译时优化的好处。cljs虽然作为动态类型语言,但其提供Metadata让我们在必要的时候可选择地补充类型提示,以便提高代码可读性和供编译器优化使用。除了上述以外,Metadata还让我们在不影响对象本阅读全文
posted @ 2017-07-19 09:14 ^_^肥仔John 阅读(99) 评论(0) 编辑
摘要: 前言  在项目中我们一般会为实际问题域定义领域数据模型,譬如开发VDOM时自然而言就会定义个VNode数据类型,用于打包存储、操作相关数据。clj/cljs不单内置了 、`Vector Set Map deftype defrecord`让我们可以自定义数据结构,以满足实际开发需求。 定义阅读全文
posted @ 2017-07-12 10:22 ^_^肥仔John 阅读(62) 评论(0) 编辑
摘要: 前言  作为一门函数式编程语言,深入了解函数的定义和使用自然是十分重要的事情,下面我们一起来学习吧! 3种基础定义方法 定义语法 示例 定义语法 示例 其实 是个macro,最终会展开为 这种定义方式。因此后面的均以 这种形式作说明。 Lambda表达式 定义语法 示例 注意: 1. La阅读全文
posted @ 2017-07-10 09:07 ^_^肥仔John 阅读(80) 评论(0) 编辑
摘要: 前言  每逢学习一个新的语言时总要先了解这门语言支持的数据类型,因为数据类型决定这门语言所针对的问题域,像Bash那样内置只支持字符串的脚步明显就是用于文本处理啦。而数据类型又分为标量类型(Scalar)、结构类型(Struct)和集合类型(Collection),标题中的简单类型实质就是阅读全文
posted @ 2017-07-05 06:48 ^_^肥仔John 阅读(98) 评论(0) 编辑
摘要: 前言  习惯了Ramda.js就会潜意识地认为函数均已柯里化,然后就可以随心所欲的用函数生成函数,或者使用compose组合多个函数来生成一个新函数。如下  ES6的arrow function让我们轻易写出柯里化的函数(当然使用Ramda.js会更轻松),若换成ES5就蛋痛很多阅读全文
posted @ 2017-07-02 09:11 ^_^肥仔John 阅读(21) 评论(0) 编辑
摘要: 前言  一个cljs文件定义一个命名空间,通过命名空间可以有效组织代码,这是构建大型系统必备的基础设施。本篇我们就深入理解cljs中的命名空间吧! 好习惯从"头"开始 每个cljs文件首行非注释的内容必定如下 而当前的cljs文件路径为 ,很明显命名空间与源码文件路径是一一对应的,对应规则阅读全文
posted @ 2017-06-30 08:46 ^_^肥仔John 阅读(140) 评论(0) 编辑
摘要: 前言  书接上一回,在了解cljs基本语法后并在clojurescript.net的奇特错误提示后,我们必须痛定思痛地搭建一个本地的开发环境,以便后续深入地学习cljs。 现有的构建工具  由于浏览器仅能运行JS,而无法直接运行cljs,因此我们需要搭建一个预编译环境将cljs编阅读全文
posted @ 2017-06-28 08:44 ^_^肥仔John 阅读(169) 评论(0) 编辑
摘要: 前言  两年多前知道cljs的存在时十分兴奋,但因为工作中根本用不上,国内也没有专门的职位于是搁置了对其的探索。而近一两年来又刮起了函数式编程的风潮,恰逢有幸主理新项目的前端架构,于是引入Ramda.js来疗藉心中压抑已久的渴望,谁知一发不可收拾,于是抛弃所有利益的考虑,遵循内心,好好追逐阅读全文
posted @ 2017-06-19 13:21 ^_^肥仔John 阅读(190) 评论(0) 编辑
摘要: 前言  最近在用Polymer封装纯数字的输入框,开发过程中发现不是坑,也有不少值得研究的地方。本系列打算分4篇来叙述这段可歌可泣的踩坑经历: 1. "《动手写个数字输入框1:input[type=number]的遗憾》" 2. "《动手写个数字输入框2:起手式——拦截非法字符》" 3. 阅读全文
posted @ 2017-06-07 09:25 ^_^肥仔John 阅读(412) 评论(0) 编辑
摘要: 前言  最近在用Polymer封装纯数字的输入框,开发过程中发现不是坑,也有不少值得研究的地方。本系列打算分4篇来叙述这段可歌可泣的踩坑经历: 1. "《动手写个数字输入框1:input[type=number]的遗憾》" 2. "《动手写个数字输入框2:起手式——拦截非法字符》" 3. 阅读全文
posted @ 2017-06-02 08:44 ^_^肥仔John 阅读(443) 评论(0) 编辑