src/deps.cljs
src/react/react.js
src/react/react.min.js
src/react/externs.js
本頁說明如何封裝與 Closure 不相容的 JavaScript 程式庫,以供 ClojureScript 使用。在封裝程式庫之前,請確保其他人尚未封裝它。CLJSJS 是一個有前景的社群驅動專案,旨在提供一組精選的依賴項。為了避免重複工作和依賴衝突,建議為像是 CLJSJS 的聯合專案做出貢獻。
當為 ClojureScript 使用封裝與 Closure 不相容的程式庫時,請確保包含程式庫的開發版本、程式庫的生產版本和一個 externs 檔案。例如,如果您要封裝 React 以供使用,目錄結構可能如下所示:
src/deps.cljs
src/react/react.js
src/react/react.min.js
src/react/externs.js
請注意,您必須指定 deps.cljs
React 的 deps.cljs 檔案可能如下所示:
{:foreign-libs
[{:file "react/react.js"
:file-min "react/react.min.js"
:provides ["com.facebook.React"]}]
:externs ["react/externs.js"]}
現在,使用者可以像在他們的 pom.xml 或 project.clj 中新增任何其他依賴項一樣,簡單地新增您的 JAR,並在他們的 ClojureScript 原始碼中要求 com.facebook.React
命名空間以匯入 React。重要的是要了解,在這種情況下,命名空間是完全合成的 - 外部依賴項總是全域載入。
JAR 可以包含任意數量的外部程式庫,只需將更多項目新增到 :foreign-libs
向量中即可。
:file-min
是完全可選的,但建議使用上述模式,以獲得程式庫消費者的最佳體驗。
如需完整範例,請參閱 react-cljs。
如果您的外部程式庫有依賴項,則您必須在 :requires
向量中列舉它們。
{:foreign-libs
[{:file "jquery/jquery.js"
:file-min "jquery/jquery.min.js"
:provides ["org.jquery.jQuery"]}
{:file "jquery/ui/core.js"
:file-min "jquery/ui/core.min.js"
:provides ["org.jquery.ui.Core"]
:requires ["org.jquery.jQuery"]}
{:file "jquery/ui/autocomplete.js"
:file-min "jquery/ui/autocomplete.min.js"
:provides ["org.jquery.ui.Autocomplete"]
:requires ["org.jquery.ui.Core"]}]
:externs ["jquery/jquery.js" "jquery/jquery.ui.js"]}