ClojureScript

Google Closure ライブラリ

ClojureScript プロジェクトでは、Googleの多くの製品(Gmail、Docsなど)で構築および使用されている大規模なライブラリであるGoogle Closure ライブラリが常に自動的にインクルードされます。DOM操作、サーバー通信、アニメーション、データ構造、単体テスト、リッチテキスト編集、UIウィジェット/コントロールのための低レベルユーティリティが備わっています。

まずはラッパーライブラリを試してみましょう!

最初に、Google Closure ライブラリのいくつかの機能をラップする以下のClojureScriptライブラリを検討することをお勧めします。それらのソースコードは、Closureを直接使用する際の優れた例としても役立ちます。

ClojureScript ラッパー Closure ライブラリ

cljs-time

goog.date

cljs-http

goog.net.XhrIogoog.uri

cljs-ajax

goog.net.XhrIogoog.urigoog.json

cuerdas

goog.string

glögi

goog.log

* ClojureScriptのコアライブラリに含まれています

Google Closure の直接使用

役に立つブログ記事

ClojureScriptコードでGoogle Closureを使用するには、次のルールに従います。

  • Closureクラス(goog.Uriのような名前空間でもある)と列挙型には:importを使用します。

  • それ以外のものには:requireを使用します。

クラスのインポート

これは、同時に名前空間でもあるクラスを直接参照する場合にのみ使用します。それ以外の場合は、`ns`フォームで`:require`を使用するか、`require` REPLヘルパーを使用してください。

(ns example.core
  (:import goog.Uri))
;; in REPL
(import 'goog.Uri)
(Uri. "http://example.com")
;;=> #<http://example.com>

列挙型のインポート

(ns example.core
  (:import [goog.events EventType]))
;; in REPL
(import '[goog.events EventType])
EventType.CLICK
;;=> "click"

関数のrequire

(ns example.core
  (:require [goog.math :as math]))
;; in REPL
(require '[goog.math :as math])
(math/clamp -1 0 5)
;;=> 0

場合によっては、親名前空間をrequireしてもシンボルが自動的にインクルードされない場合があります。これは、これらのシンボルが独自のファイルにあり、具体的なインクルードが必要な場合に発生します。

(ns example.core
  (:require
    [goog.string :as gstring]
    goog.string.format))
;; in REPL
(require '[goog.string :as gstring])
(require 'goog.string.format)

(goog.string.format "%05d" 123)
;;=> 00123

;; or use the alias
(gstring/format "%05d" 123)
;;=> 00123

例を検索する

次のように検索して、Githubで`goog.dom`を使用する`cljs`ファイルを探すことができます。

Search GitHub: "goog.dom extension:cljs"

または、GithubでGoogle Closureライブラリを検索して、関数に関するキーワードを探すことができます。

Search Closure Library on Github: "hours minutes"