Skip to content

Instantly share code, notes, and snippets.

@jiyinyiyong jiyinyiyong/cljs-intro.md
Last active Dec 9, 2018

Embed
What would you like to do?
sharing ClojureScript to SHLUG

ClojureScript 介绍


关于我

  • ChenYong, @题叶, @jiyinyiyong
  • 前端开发者, 饿了么, Teambition
  • React, ClojureScript

Clojure 是什么

  • http://clojure.org
  • Lisp 方言, 动态语言, macros
  • 发明于 2007 年, 现代化的编程语言
  • 函数式编程, 不可变数据
  • Atoms/Refs 的并发编程
  • 编译到 JVM Bytecode, 使用 Jar 包和命名空间

ClojureScript 是什么?


有哪些语言特性

更多...


Interop

http://www.spacjer.com/blog/2014/09/12/clojurescript-javascript-interop/


工具链

  • Build Tasks: Lein / Boot
  • React bindings: Om / Reagent / Rum
  • REPL: Planck / Lumo
  • Compiler wrapper: shadow-cljs

Demo

  • REPL
  • cljs-basics

基本的代码的演示, 基于 Lumo


为什么要研究 ClojureScript

跟前端的技术栈作对比

  • 语言设计, 对于数据有更清晰的概念, immutability, atom
  • 强调纯函数, 便于进行热替换
  • 强大的 DSL 能力
  • 同时 immutability 提供了更多优化的空间

社区

  • Clojurians(Slack)
  • Reddit/Clojure
  • Twitter
  • clojureverse.org
  • clojure-china.org

npm 生态

  • 自动推断引用的外部代码
  • npm-deps 复用 npm 模块
  • Code Splitting

官网 News 或者 https://anmonteiro.com/


Demo

基于 shadow-cljs

  • 基于热替换的 Node.js 命令行开发
  • 基于热替换的测试代码
  • 基于热替换的网页开发

(连接大屏幕可能性能问题更明显)


Cumulo Editor(私货)

通过编辑器和 Macro 来编写 Clojure(Script)


Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.