Clojure/Script 学习
layout: post
title: “Clojure Learning”
description: “”
category: devtech/clojure
tags: [clojure, GraphQL]
RESTful Service Framework
- Luminus 综合 web 框架,其中(查看 Profiles 详细包含内容)包含 RESTful Services 的实现。
- Immutant Web server
- Hiccup HTML Template
- Compojure API Sweet web apis with Compojure & Swagger
- Arachne is a full, highly modular web development framework for Clojure. It emphasizes ease, simplicity, and a solid, scalable design.
- Hoplon ClojureScript Web Framework,如果只做一些网页,不多的动态效果,特别是你的技术栈还没有加入 React,而是在用 jQuery,而此时想试用 clojure script,那就可以试试这个 Hoplon 框架。
- What is Hoplon? 说明了 hoplon 不同于 react 这类的使用虚拟 Dom 的框架的区别之处。
- Precept A declarative programming framework, Precept is a framework for creating reactive web applications using a rules engine, declarative logic, and relational data modeling.
- Pedestal is a sturdy(坚实的) and reliable(可靠的) base for services and APIs.
- Liberator (Github repo) is a Clojure library for building RESTful applications.
- Compojure is a small routing library for Ring that allows web applications to be composed of small, independent parts.
- Moustache is a micro web framework/internal DSL to wire Ring handlers and middlewares.
- bidi Bi-directional URI dispatch.
- Silk Isomorphic Clojure[Script] Routing.
各框架比较图
Clojurescript TodoMVC Examples by Library 各种 cljs 框架的 TodoMVC 比较
Rich Hickey Already Answered That!
Tenzing, the awesome Clojurescript application template 默认无后台,专注前端应用开发。 注:Eclipse Public License
- confetti-clj/confetti A tool to help creating and deploying static sites with AWS 在 AWS 上架设自己的静态网站服务 的工具。
Web server
- Ring is a low-level interface and library for building web applications in the Clojure programming language. It is similar to the Ruby Rack library, the WSGI in Python, or the Java Servlet specification.
- Chestnut is a Clojure/ClojureScript web apps application template.
React framework
- Reagent
- Om
- Quiescent A lightweight ClojureScript abstraction over ReactJS, emphasizing its ability to (re)render immutable values efficiently.
- Rum is a client/server library for HTML UI. In ClojureScript, it works as React wrapper, in Clojure, it is a static HTML generator.
- Citrus State management library for Rum
- Brutha Simple ClojureScript interface to React
GraphQL Framework
- Lacinia is a library for implementing Facebook’s GraphQL specification in idiomatic Clojure. Github site
HTML UI lib
- Rum is a client/server library for HTML UI. In ClojureScript, it works as React wrapper, in Clojure, it is a static HTML generator.
- antizer ClojureScript library for Ant Design React UI components. 库倒是不错,可惜版本有点落后了,antd 已经 3.x 了,这个才适配 2.x
相关网站资料
- Clojure 文档
- cljdoc is a platform to build, host and view documentation for Clojure/Script libraries.
- Ten reasons to use Clojure/ClojureScript on your next web dev project
- oakes/paren-soup A browser-based editor for ClojureScript
- maven及clojars镜像 可以解决国内连接clojars慢的问题。
- Qinais/WeChat 一个基于Clojure语言的微信开发库
- Clojure Web 开发– Ring 使用指南
- Night Light 在Clojure项目中添加依赖,运行命令即可运行起一个 IDE。
- jiacai2050/history-master 用 ClojureScript + Reagent + Re-frame + Ant.design 写的浏览器插件,可以分析历史访问记录。
- Scheme 语言官网
- Should I learn Scheme or Racket?
- Lisp: Common Lisp, Racket, Clojure, Emacs Lisp 比较
- Precursor is the best way to collaborate on early prototypes with your team. 用 Clojure/Script, Datomic, advanced CSS 等写成的原型设计工具,据说相当于 Sketch + Skype + Slack,可以团队协同头脑风暴设计、语音聊天等。
与 Scheme 的区别和比较
What are the differences between Clojure, Scheme/Racket and Common Lisp?
The languages have somewhat different design philosophies. Scheme was designed as a minimal dialect for understanding the Actor Model; it later became used for pedagogy. Clojure was designed for concurrency. As a result, Scheme has a reputation of being minimal and elegant, Common Lisp of being powerful and paradigm-agnostic (functional, OO, whatever), and Clojure of favoring functional programming.
Scheme was designed to simplify the Lisp language, that was its only intent except it never really caught on. I think Clojure does something similar its meant to simplify Scheme for the JVM nothing more. Its just like every other JVM language just there to inflate the user experience, only to simplify writting boilerplate in Java land.