(ns example.core
(:import goog.Uri))
ClojureScript プロジェクトでは、Googleの多くの製品(Gmail、Docsなど)で構築および使用されている大規模なライブラリであるGoogle Closure ライブラリが常に自動的にインクルードされます。DOM操作、サーバー通信、アニメーション、データ構造、単体テスト、リッチテキスト編集、UIウィジェット/コントロールのための低レベルユーティリティが備わっています。
最初に、Google Closure ライブラリのいくつかの機能をラップする以下のClojureScriptライブラリを検討することをお勧めします。それらのソースコードは、Closureを直接使用する際の優れた例としても役立ちます。
| ClojureScript ラッパー | Closure ライブラリ |
|---|---|
* ClojureScriptのコアライブラリに含まれています
役に立つブログ記事
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"
(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