<commit_before>= Google Closure Library
<NAME>
2016-07-29
:type: reference
:toc: macro
:icons: font

ifdef::env-github,env-browser[:outfilesuffix: .adoc]

toc::[]

ClojureScript projects always auto-include the
https://developers.google.com/closure/library/[Google Closure Library],
a massive library built and used by Google on many of their products
(Gmail, Docs, etc). It has low-level utilities for DOM manipulation,
server communication, animation, data structures, unit testing,
rich-text editing, and UI widgets/controls.

* http://google.github.io/closure-library/api/[Google Closure Library
API Reference]
* http://www.closurecheatsheet.com/[Closure Cheatsheet] - abridged API
with usage examples

[[try-the-wrapper-libraries-first]]
=== Try the wrapper libraries first!

You may first want to consider the following ClojureScript libraries
which wrap some functionality from Google Closure Library. Their source
code also serves as good examples of how to use Closure directly.

[cols="<*", options="header", role="table"]
|=======================================================================
|ClojureScript wrapper |Closure Libraries
|https://github.com/andrewmcveigh/cljs-time[cljs-time]
|http://google.github.io/closure-library/api/namespace_goog_date.html[goog.date]

|https://github.com/r0man/cljs-http[cljs-http]
|http://google.github.io/closure-library/api/namespace_goog_net.html[goog.net],
http://google.github.io/closure-library/api/class_goog_Uri.html[goog.uri]

|https://github.com/JulianBirch/cljs-ajax[cljs-ajax]
|http://google.github.io/closure-library/api/namespace_goog_net.html[goog.net],
http://google.github.io/closure-library/api/class_goog_Uri.html[goog.uri],
http://google.github.io/closure-library/api/namespace_goog_json.html[goog.json]

|https://funcool.github.io/cuerdas/latest/[cuerdas]
|http://google.github.io/closure-library/api/namespace_goog_string.html[goog.string]
|=======================================================================

_* included in ClojureScript's core library_

[[using-google-closure-directly]]
=== Using Google Closure directly

Some helpful blog posts:

* http://clojurescriptmadeeasy.com/blog/do-not-forget-about-google-closure.html[ClojureScript
Made Easy - Don't forget about Google Closure]
* http://clojurescriptmadeeasy.com/blog/when-do-i-use-require-vs-import.html[ClojureScript<commit_msg>Fix dead links to Closure Library API, add Glögi<commit_after>= Google Closure Library
<NAME>
2016-07-29
:type: reference
:toc: macro
:icons: font

ifdef::env-github,env-browser[:outfilesuffix: .adoc]

toc::[]

ClojureScript projects always auto-include the
https://developers.google.com/closure/library/[Google Closure Library],
a massive library built and used by Google on many of their products
(Gmail, Docs, etc). It has low-level utilities for DOM manipulation,
server communication, animation, data structures, unit testing,
rich-text editing, and UI widgets/controls.

* http://google.github.io/closure-library/api/[Google Closure Library
API Reference]
* http://www.closurecheatsheet.com/[Closure Cheatsheet] - abridged API
with usage examples

[[try-the-wrapper-libraries-first]]
=== Try the wrapper libraries first!

You may first want to consider the following ClojureScript libraries
which wrap some functionality from Google Closure Library. Their source
code also serves as good examples of how to use Closure directly.

[cols="<*", options="header", role="table"]
|=======================================================================
|ClojureScript wrapper |Closure Libraries
|https://github.com/andrewmcveigh/cljs-time[cljs-time]
|https://google.github.io/closure-library/api/goog.date.html[goog.date]

|https://github.com/r0man/cljs-http[cljs-http]
|https://google.github.io/closure-library/api/goog.net.XhrIo.html[goog.net.XhrIo],
https://google.github.io/closure-library/api/goog.Uri.html[goog.uri]

|https://github.com/JulianBirch/cljs-ajax[cljs-ajax]
|http://google.github.io/closure-library/api/goog.net.XhrIo.html[goog.net.XhrIo],
http://google.github.io/closure-library/api/goog.Uri.html[goog.uri],
http://google.github.io/closure-library/api/goog.json.html[goog.json]

|https://funcool.github.io/cuerdas/latest/[cuerdas]
|https://google.github.io/closure-library/api/goog.string.html[goog.string]

|https://github.com/lambdaisland/glogi[glögi]
|https://google.github.io/closure-library/api/goog.log.html[goog.log]
|=======================================================================

_* included in ClojureScript's core library_

[[using-google-closure-directly]]
=== Using Google Closure directly

Some helpful blog posts:

* http://clojurescriptmadeeasy.com/blog/do-not-forget-about-google-closure.html[ClojureScript
Made Easy - Don't forget about Google Closure]
* http://clojurescriptmadeeasy.com/blog/when-do-i-use-require-vs-import.html[ClojureScript
{'fraction_non_alphanumeric': 0.18806584362139916, 'fraction_numerical': 0.003703703703703704, 'mean_word_length': 5.836849507735583, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 5, 'https://': 16, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2392694', 'n_tokens_mistral': 1607, 'n_tokens_neox': 1485, 'n_words': 307}