2014-06-06 12 views

Antwort

9

Ja, kann man, es ist nichts Besonderes an sich:

(def fs (js/require "fs")) 
(println (.readdirSync fs js/__dirname)) 

mit den Externen Seien Sie vorsichtig, wenn Sie Optimierungen nicht keine Verwendung.

Edit: Hat Leiningen Spiel mit den verschiedenen js Paket-Manager ?:
Nope. Da die Sprache keine Pakete hat, kann sie nicht wissen. Sie müssen js Abhängigkeitsverwaltung und lein Deps auch tun. Es gibt eine lein-npm und eine lein-bower, um bei der Integration dieser beiden Paketmanager zu helfen.

+0

Hat Leiningen Spiel mit den verschiedenen js Paket-Manager? – Bill

+0

Nein. Da die Sprache keine Pakete hat, kann sie nicht wissen. Sie müssen js Abhängigkeitsverwaltung und lein Deps auch tun. Es gibt ein [lein-npm] (https://github.com/bodil/lein-npm) und ein [lein-bower] (https://github.com/chlorinejs/lein-bower), um diese zu integrieren zwei Paketmanager. – Joaquin

+0

Ist es möglich, ein Knotenmodul (d. H. "Fs") in einen cljs-Namespace zu integrieren, sodass Sie direkt auf seine Methoden zugreifen können? In diesem Fall würden wir sagen können: (readdirSync js/__ dirname) '? – George

0

Seit ClojureScript 1.9.854 gibt es bessere Unterstützung, um npm-Module als Abhängigkeiten zu deklarieren und sie von Ihren Namespaces zu verlangen.

Um es als eine Abhängigkeit zu erklären, müssen Sie die :npm-deps Compiler-Option verwenden (zusammen mit dem :install-deps ein, wenn Sie möchten lein/boot, um es automatisch zu installieren).

:npm-deps ist eine Zuordnung von Schlüsselwort zu Zeichenfolge, wobei das Schlüsselwort der Name der Abhängigkeit ist, die Sie verwenden würden, um es mit npm zu installieren, und die Zeichenfolge ist die Version der Abhängigkeit.

Ein Beispiel von dem, was Sie zu Ihrem project.clj hinzufügen könnten (wenn Sie lein-cljsbuild verwenden), um left-pad: zu verwenden

:cljsbuild {:builds [{:id "prod" 
        :source-paths ["src"] 
        :compiler {:main left-pad-demo.core 
           :output-to "package/index.js" 
           :target :nodejs 
           :output-dir "target" 
           :optimizations :simple 
           :install-deps true 
           :npm-deps {:left-pad "1.2.0"} 
           :pretty-print true}}]}) 

Und dann, aus Ihrem Namensraum, können Sie es wie so benötigen:

(ns left-pad-demo.core 
    (:require left-pad)) 

Oder so:

(ns left-pad-demo.core 
    (:require ["left-pad" :as lp])) 

Eine vollständige Arbeit ing Namespace könnte wie folgt aussehen:

(ns left-pad-demo.core 
    (:require left-pad)) 

(defn -main [s length] 
    (console.log (left-pad s length))) 

(set! *main-cli-fn* -main) 

Referenzen:

Verwandte Themen