2011-08-05 14 views
11

मैं क्लोजरस्क्रिप्ट का उपयोग करके एक Google क्रोम एक्सटेंशन लिखना चाहता हूं। क्लोजरस्क्रिप्ट के साथ मैं सभी Google क्लोजर libs का उपयोग कर सकता हूं, लेकिन क्रोम ब्राउज़र में afaik पहुंच उन libs में शामिल नहीं है। इसलिए मैं अपने क्रोम सामान को अपने स्वयं के जावास्क्रिप्ट lib में लपेटना चाहता हूं।मैं क्लोजरस्क्रिप्ट में अपनी खुद की जावास्क्रिप्ट libs कैसे जोड़ूं?

अब तक मैंने अपना खुद का जार बनाने की कोशिश की है जिसमें एक ही जावास्क्रिप्ट फ़ाइल है जो सिर्फ एक फू ऑब्जेक्ट बनाती है और निर्माता को निर्यात करती है। I'v ClojureScript संकलक (जो भी उदाहरण goog.jar के लिए है) की lib निर्देशिका में इस जार जोड़ा है, लेकिन अब तक भाग्य के बिना:

Exception in thread "main" java.lang.IllegalArgumentException: No implementation of method: :-compile of protocol: #'cljs.closure/Compilable found for class: nil 
at clojure.core$_cache_protocol_fn.invoke(core_deftype.clj:494) 
at cljs.closure$eval1056$fn__1057$G__1047__1064.invoke(closure.clj:187) 
at cljs.closure$get_compiled_cljs.invoke(closure.clj:422) 
at cljs.closure$cljs_dependencies.invoke(closure.clj:440) 
at cljs.closure$add_dependencies.doInvoke(closure.clj:462) 
at clojure.lang.RestFn.applyTo(RestFn.java:139) 
at clojure.core$apply.invoke(core.clj:602) 
at cljs.closure$build.invoke(closure.clj:701) 
at user$eval1246.invoke(cljsc.clj:21) 
at clojure.lang.Compiler.eval(Compiler.java:6406) 
at clojure.lang.Compiler.load(Compiler.java:6843) 
at clojure.lang.Compiler.loadFile(Compiler.java:6804) 
at clojure.main$load_script.invoke(main.clj:282) 
at clojure.main$script_opt.invoke(main.clj:342) 
at clojure.main$main.doInvoke(main.clj:426) 
at clojure.lang.RestFn.invoke(RestFn.java:421) 
at clojure.lang.Var.invoke(Var.java:405) 
at clojure.lang.AFn.applyToHelper(AFn.java:163) 
at clojure.lang.Var.applyTo(Var.java:518) 
at clojure.main.main(main.java:37) 

किसी को भी इस से पहले की कोशिश की है?

उत्तर

5

अगर मुझे याद है कि रिच हिकी सही तरीके से बात करते हैं तो क्लोजर कंपाइलर के पूरे कार्यक्रम अनुकूलन को कुछ कोडिंग सम्मेलनों का पालन करने के लिए किसी लाइब्रेरी कोड की आवश्यकता होती है। मुझे लगता है कि उन्होंने यह भी कहा कि JQuery में से कुछ ऐसा नहीं कर रहा है लेकिन डोजो ऐसा कर रहा है। मैं कभी नहीं किया लेकिन आप कुछ उपयोगी जानकारी here

+1

"ClojureScript से जावास्क्रिप्ट पुस्तकालय को विस्तृत करना" यदि यह केवल समस्या यह है, हम अभी भी सक्षम उपयोग कम अनुकूलन खंडिका से इन पुस्तकालयों होना चाहिए बैठकों। –

+0

कोशिश करेगा Jquery-wrapper jayq https://github.com/ibdknox/jayq इसे विस्तृत करता है। हालांकि, क्लोजर-कंपाइलर कोड को और अधिक कुशल बनाता है, बाहरी libs धीमा हो जाएगा। – claj

8

ल्यूक Vanderhart से इस पोस्ट पर एक नजर डालें मिल सकती है: "ClojureScript में जावास्क्रिप्ट पुस्तकालयों का उपयोग करना"

http://lukevanderhart.com/2011/09/30/using-javascript-and-clojurescript.html

इसके अलावा, केविन Lynagh से इस वीडियो:

http://www.youtube.com/watch?v=XfzXFWTT-z0

संबंधित मुद्दे