Quiero escribir una extensión de Google Chrome, usando ClojureScript. Con ClojureScript puedo usar todas las librerías de Google Closure, pero el acceso incorrecto al navegador Chrome no está incluido en esas librerías. Por lo tanto, quiero ajustar todo el contenido de Chrome en mi propia biblioteca de JavaScript.¿Cómo agrego mis propias librerías de JavaScript a ClojureScript?
Hasta ahora he intentado crear mi propio jar que tiene un único archivo JavaScript que solo crea un objeto Foo y exporta el constructor. I'v añade este frasco en el directorio lib del compilador ClojureScript (que también tiene por ejemplo goog.jar), pero hasta ahora sin suerte:
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)
nadie intentó esto antes?
Si ese es el único problema, que aún debe ser capaz de utilizar estas bibliotecas con adoquín menor optimización ings. Intentará –
El Jquery-wrapper jayq https://github.com/ibdknox/jayq elabora esto. Sin embargo, el compilador de cierre hace que el código sea más eficiente, tener libs externos será más lento. – claj