(ns example.core
(:import goog.Uri))
ClojureScript 项目始终自动包含 Google Closure 库,这是一个由 Google 构建并在其许多产品(Gmail、Docs 等)中使用的庞大库。它提供了用于 DOM 操作、服务器通信、动画、数据结构、单元测试、富文本编辑和 UI 小部件/控件的低级实用程序。
您可能首先需要考虑以下 ClojureScript 库,它们封装了来自 Google Closure 库的一些功能。它们的源代码也是直接使用 Closure 的好例子。
ClojureScript 包装器 | Closure 库 |
---|---|
* 包含在 ClojureScript 的核心库中
一些有帮助的博客文章
要在 ClojureScript 代码中使用 Google Closure,规则是使用
:import
用于 Closure 类(它们也是命名空间,例如 goog.Uri
)和枚举
: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
有时在需要其父命名空间时,符号不会自动包含。当这些符号位于它们自己的文件中并需要特定包含时,就会发生这种情况 |
(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