google-chrome-extension clojure google-closure clojurescript

google chrome extension - ¿Es posible usar Clojurescript o Google Closure para escribir extensiones de Chrome o aplicaciones web?



google-chrome-extension google-closure (4)

Quiero usar clojurescript para escribir extensiones de Chrome.


Las extensiones de Chrome generalmente se crean con HTML / CSS / JS, por lo que ClojureScript debería funcionar bien porque se compila en JavaScript. Dicho esto, no creo que nadie haya construido una gran extensión con ClojureScript todavía. Como una prueba de concepto aquí hay un esquema general de cómo hacer una extensión de alerta simple que dirá Zaboomafoo (lo siento por ese nombre):

Primero instale Leiningen y lein-cljsbuild . Lea los documentos de lein-cljsbuild y consulte la wiki en ClojureScript para comprender cómo usar lein-cljsbuild para proyectos y compilación.

Cree un archivo ClojureScript que muestre una alerta que diga "Zaboomafoo" de esta manera:

(ns Zaboomafoo.hello) (js/alert "Zaboomafoo")

Compile esto con lein cljsbuild para obtener un archivo JavaScript. A continuación, agregue un archivo HTML básico y manifest.json para la extensión.

Zaboomafoo.html:

<!Doctype html> <html> <head> <title>Zaboomafoo!</title> </head> <body> <script type="text/javascript" src="Zaboomafoo.js"></script> </body> </html>

manifest.json:

{ "name": "Displays Zaboomafoo when opening a new tab", "version": "0.1", "incognito": "split", "chrome_url_overrides": { "newtab": "Zaboomafoo.html" }, "manifest_version": 2 }

Coloque el nuevo manifest.json, Zaboomafoo.html y Zaboomafoo.js en una carpeta obvia. Finalmente, vaya a la página de extensión de Chrome, active el modo desarrollador, cargue la extensión desempaquetada y abra una nueva pestaña. La extensión debe cargar una alerta que molestamente dice "Zaboomafoo" cuando abre la pestaña. Esperemos que las extensiones de navegador lleguen a ser un poco más populares, pero este es su flujo general.


Eche un vistazo a esta extensión de cromo escrita en cljs que le permite evaluar el código de clojure en el navegador por selección como un ejemplo.


Comencé este proyecto con el propósito exacto de escribir una extensión de Chrome usando ClojureScript.

Mientras que la respuesta de greenyouse te proporciona las direcciones generales, como principiante en ClojureScript tuve algunos problemas para usar lein y cljsbuild y elegí ir primero a la configuración básica. Quizás ayudará a alguien.

Sidenote: planeo migrar mi proyecto para cljsbuild y cljsbuild una vez que comprendo mejor las cosas. En ese punto, actualizaré esta respuesta.