2014-06-06 33 views
9

Bir clojurescript projesinde rasgele node.js modüllerini kullanmak mümkün mü? Eğer evet ise, bunları dahil etmek için nasıl giderim? Değilse neden olmasın? Eğer optimizasyonlar hiçbiri kullanmazsanızRasgele düğüm modülleri clojurescript'ten kullanabilir miyim?

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

eksterna konusunda dikkatli olun:

cevap

9

Evet, yapabilirsiniz, bu konuda özel bir şey yok.

Düzenleme: Çeşitli js paket yöneticileri ?:
Nope ile Leiningen oyun yapar. Dilin paketleri olmadığı için bunu bilemez. Sen de js bağımlılık yönetimi ve lein depsleri yapmalısın. Bu iki paket yöneticisini entegre etmek için lein-npm ve lein-bower bulunmaktadır.

+0

çeşitli js paket yöneticileri ile Leiningen oyun mu? – Bill

+0

Hayır. Dilin paketleri olmadığı için bunu bilemez. Sen de js bağımlılık yönetimi ve lein depsleri yapmalısın. Bunların entegrasyonuna yardımcı olmak için bir [lein-npm] (https://github.com/bodil/lein-npm) ve bir [lein-bower] (https://github.com/chlorinejs/lein-bower) var. iki paket yöneticisi. – Joaquin

+0

Bir düğüm modülüne (örn. "Fs") bir cljs ad alanına, yöntemlerine doğrudan erişebilmeniz mümkün mü? Bu durumda '(readdirSync js/__ dirname)' diyebilir miyiz? – George

0

ClojureScript 1.9.854'ten beri, npm modüllerini bağımlılıklar olarak bildirme ve bunların ad alanlarınızdan istifade etmeleri konusunda daha iyi destek vardır. (Eğer lein/boot otomatik olarak yüklemek istiyorsanız, :install-deps biriyle birlikte) bir bağımlılık olarak ilan etmek için

, sen :npm-deps derleyici seçeneğini kullanmanız gerekir.

:npm-deps anahtar sözcükten dizeye, anahtar kelimenin npm kullanarak yüklemek için kullanacağınız bağımlılığın adı ve dizenin bağımlılığın sürümüdür.

(eğer lein-cljsbuild kullanıyorsanız) sırayla, sizin project.clj eklemek olabilir ne bir örnek sizin ad alanından sonra 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}}]}) 

Ve kullanmak, bunu gibi gerektirebilir:

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

Ya da:

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

tam çalışma

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

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

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

Referanslar: ing ad gibi görünebilir

İlgili konular