run repl read-eval-print-loop clojurescript

read-eval-print-loop - run - repl python



¿Cómo configuro un Clojurescript REPL con emacs? (3)

Cemerick al rescate de nuevo: Austin ( https://github.com/cemerick/austin ) es exactamente lo que está buscando.

Austin le ofrece dos opciones: una REPL donde se evalúa el JS en un navegador (un "proyecto REPL") o una REPL más completa, integrada y conectada al navegador. Parece que lo último es lo que está buscando, y necesita profundizar un poco más en sus documentos: https://github.com/cemerick/austin/tree/master/browser-connected-repl-sample

Para que el REPL conectado al navegador funcione, el ejemplo de Chas es bastante sencillo de seguir y se reduce a:

  1. Agregue un poco de middleware o plantilla mágica para agregar un elemento de script JS a su página HTML, y ese script debe contener la salida de (cemerick.austin.repls/browser-connected-repl-js)
  2. Inicie nREPL, inicie su servidor de anillo y luego
    (def repl-env (reset! cemerick.austin.repls/browser-repl-env (cemerick.austin/repl-env)))
    para crear un entorno REPL.
  3. Gire la sesión nREPL de un Clojure a un ClojureScript REPL con
    (cemerick.austin.repls/cljs-repl repl-env)
  4. Conéctese a su aplicación de servidor de anillo que todavía se está ejecutando con un navegador y debería estar conectado.
    (.alert js/window "Hi!") debería probarlo.
  5. El uso de los comandos estándar de Emacs nREPL funcionará como se espera, compilando ClojureScript en JavaScript y enviándolo al navegador para su evaluación.

La principal diferencia entre Piggieback y Austin son los primeros y segundos pasos: el middleware utiliza el átomo para agregar un bloque de JavaScript en línea que se conecta de nuevo al nREPL. Dado que la URL HTTP se determina en el tiempo de ejecución, el servidor de anillo y el JavaScript del lado del cliente deben trabajar en concierto.

FWIW Creé una función en mi espacio de nombres de user para acelerar la conexión de CLJS REPL:

(defn cljs-browser-repl "Fire up a browser-connected ClojureScript REPL" [] (let [repl-env (reset! cemerick.austin.repls/browser-repl-env (cemerick.austin/repl-env))] (cemerick.austin.repls/cljs-repl repl-env)))

Estoy tratando de configurar un entorno para Clojurescript. El problema que tengo es no saber cómo configurarlo para poder conectarme a un REPL de Clojurescript Browser desde emacs, así que puedo evaluar los formularios directamente desde el editor y hacer que se muestren en el navegador.

Cosas que he probado:

Intenté usar piggieback de Cemerick y piggybacking en nREPL. Realmente no sé cómo configurarlo desde la documentación. Pude hacerlo funcionar después de descubrir que tenía que hacer un archivo index.html en la raíz de la carpeta del proyecto. Excepto el servidor no sirve mis activos.

Intenté configurar un nivel inferior con el script bash de la wiki de Clojurescript. Sin embargo, cada vez que intento ejecutar el programa inferior-lisp me sale "Argumento de tipo incorrecto: stringp, nil".

Aquí está mi flujo de trabajo ideal:

Tengo una carpeta de proyecto / recursos / pública que tiene mis activos y archivos html. Puedo iniciar un servidor web que sirva esos archivos de alguna manera, ya sea por timbre o utilizando el simple servidor http de python. Podré conectarme a un REPL desde emacs y evaluar los formularios en él.


Con la función principal de Figwheel , la configuración de una recarga en vivo, el REPL conectado al navegador se ha vuelto mucho más simple. Figwheel.main compila su fuente de Clojurescript a medida que la cambia, y le permite evaluar el código en el navegador.

  1. Define tus dependencias en deps.edn . :paths especifica carpetas para buscar el código fuente.

    {:deps {org.clojure/clojure {:mvn/version "1.9.0"} org.clojure/clojurescript {:mvn/version "1.10.339"} com.bhauman/figwheel-main {:mvn/version "0.1.9"}} :paths ["src"]}

  2. Defina el punto de entrada de su aplicación en dev.cljs.edn . Aquí, "dev" se convierte en el nombre de compilación.

    {:main example.core}

  3. Cree algo de código ClojureScript en src/example/core.cljs .

    (ns example.core) (let [msg "Change msg in src/example/core.cljs and see what happens!"] (js/alert msg))

  4. Iniciar el REPL.

    • Para utilizar Emacs:
      1. Ejecutar Mx cider-jack-in-clojurescript
      2. Seleccione figwheel-main como su objetivo de construcción
      3. Establecer :dev como su nombre de construcción.
    • Con un terminal:
      1. Ejecute clojure -m figwheel.main -b dev -r . -b dev establece la compilación, y -r lanza un REPL en carga.

Para más información, consulte la documentación bien hecha de Figwheel .