2014-06-06 13 views

Odpowiedz

9

Tak, można, nie ma nic szczególnego w tym:

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

Bądź ostrożny z eksternów jeśli nie używać optymalizacje żadnego.

Edycja: Czy Leiningen grać z różnych menedżerów pakietów js ?:
Nie. Ponieważ język nie ma pakietów, nie może tego wiedzieć. Musisz wykonać zarządzanie zależnością js i usunąć lein. Istnieje lein-npm i lein-bower, aby pomóc w integracji tych dwóch menedżerów pakietów.

+0

Czy Leiningen grać z różnych menedżerów pakietów js? – Bill

+0

Nie. Ponieważ język nie ma pakietów, nie może tego wiedzieć. Musisz wykonać zarządzanie zależnością js i usunąć lein. Istnieje [lein-npm] (https://github.com/bodil/lein-npm) i [lein-bower] (https://github.com/chlorinejs/lein-bower), aby pomóc w integracji tych dwóch menedżerów pakietów. – Joaquin

+0

Czy jest możliwe wymaganie modułu węzła (tj. "Fs") w przestrzeni nazw cljs, aby można było uzyskać bezpośredni dostęp do jego metod? W takim przypadku chcielibyśmy móc powiedzieć '(readdirSync js/__ dirname)'? – George

0

Od ClojureScript 1.9.854, istnieje lepsza obsługa deklarowania modułów npm jako zależności i wymaganie ich od twoich przestrzeni nazw.

W celu zadeklarowania go jako zależność, trzeba użyć opcji kompilatora :npm-deps (wraz z jednym :install-deps, jeśli chcesz lein/boot aby automatycznie zainstalować).

:npm-deps to mapa od słowa kluczowego do łańcucha, gdzie słowo kluczowe to nazwa zależności, której należy użyć do zainstalowania go przy użyciu npm, a ciąg jest wersją zależności.

Przykładem tego, co można dodać do swojej project.clj (jeśli używasz lein-cljsbuild), w celu korzystania left-pad:

: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}}]}) 

a następnie z przestrzeni nazw można wymagać to tak:

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

Albo tak:

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

pełny praca nazw ing mógłby wyglądać następująco:

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

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

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

Literatura:

Powiązane problemy