ClojureScript 是一个用来将 Clojure 语言转成 JavaScript 脚本的工具。主要有以下优点:
- 简洁性: 从语法角度来说,ClojureScript 是一种基于 Lisp 的语言,这使得它的语法十分简洁。除此之外,ClojureScript 还提供了帮助我们更方便的异步编程的工具。
- 安全性: 这意味着更少的漏洞!ClojureScript 和其他的函数编程语言都有很多的特性来帮助我们减少和减轻一些常见的漏洞。
- 高性能: ClojureScript 使用了Google的Closure编译器,这使得ClojureScript能支持无用代码清除以及其他的一些特点。
- 实时编程: ClojureScript 生态圈提供了很多的工具来“实时编程”。这意味着当代码一改变,在你的项目上就会马上反应出来。
- 代码复用性: ClojureScript 能在全局中运行,很多人称之“同态”。这代表你能在服务器端和客户端运行相同的代码,这在 Node.js 的生态系统中已经是个流行的模式了。除此之外,ClojureScript 还能使用 Node.js 和 Java 生态圈当中的库。
更新日志
Enhancements
- CLJS-1346: Support require outside of ns
Changes
- CLJS-1762: Bump Closure Compiler, refactor module support
- CLJS-1658: testing for protocol membership may return false positives
- CLJS-1536: REPL def symbol init collision
- CLJS-1805: Source map should take false
- CLJS-1804: Self-host: process namespace side-effects for new require without NS
- CLJS-1803: Use new require capability in REPLs
- CLJS-1796: Measure Google Closure specific optimization time
- CLJS-1782: Self-host: allow namespaces to require their own macros
- CLJS-1563: :source-map option to cljs.build.api/build should take nil
- CLJS-1785: Warn on reference to js/foo shadowed by local binding
Fixes
- make String an implicit ns like Math. revert char? and clarify docstring. add unit tests for char?
- fix cljs.spec.test/check docstring
- CLJS-1826: Self-host: load-deps doesn't honor
:reload
and reload-all
- CLJS-1825: :source-map error when passing
false
under simple optimizations
- CLJS-1821:
add-preloads
should only touch sources if :preloads
option specified
- CLJS-1814: Move docstrings for require, etc. from
cljs.repl
to their new definitions in cljs.core
- CLJS-1809: Add 0/1 arity to
into
- CLJS-1824: transit cache feature leaks files
- CLJS-1294: Let macroexpand(-1) accept any quoted argument.
- CLJS-1818: (hash false) returns different value from Clojure
- CLJS-1817: Strange result when assoc'ing 0 to persistent hash map
- CLJS-1815: Fix failing analyzer tests
- follow-up on CLJS-460 defmulti ignores optional :hierarchy argument
- CLJS-1807: Better error messages for
ns*
calls
- CLJS-1802: Generated namespaces should be of the form
cljs.user.fileXXXX
- CLJ-1935: Use multimethod dispatch value method lookup to take hierarchies into account in multi-spec
- CLJS-1682 :foreign-libs with module conversion does not works properly if it is used form deps.cljs
- CLJS-1710: spec/double-in not implemented
- CLJS-1787: Make cljs.spec explain pluggable
- CLJS-1781: Add cljs.hash-map-test to self-parity tests
- CLJS-1788: Port CLJ-2004: include retag in multi-spec form
- CLJS-1765: Empty iterator for hash maps with nil key
- CLJS-1784: nth doesn't throw on strings or arrays
- CLJS-1773: Self-host: Don't resolve unqualified symbols / keywords with $macros
- CLJS-1770: goog-defines broken for integers
- CLJS-1600: Destructuring defprotocol fn args causes defrecord impls to silently fail
- CLJS-1335: resolve-macro-var: information missing for macros
- CLJS-1633: Improve error associated with invalid foreign-libs :file path
- CLJS-1775:
get
with nil
returns as if get
with
- CLJS-1780: Records without extmaps fail to iterate
- CLJS-1774: Self-host: Report filenames in warns in test-self-parity
- CLJS-1779: keyword 2-arity constructor accepts anything for both parameters which leads to different hashing
下载
本站原创,转载时保留以下信息:
本文转自:深度开源(open-open.com)
原文地址:http://www.open-open.com/news/view/1ae68f4f