¿Cómo crear una aplicación de varias páginas con Figwheel y Leiningen?
Tengo una aplicación simple de Figwheel que está construida con Leiningen. Quiero tener varias páginas en ella:
- index.html debería usar el código de hello-figwheel.core.
- page2.html debería usar el código de hello-figwheel.page2.
Supongo que tengo que modificar de alguna manera el archivo project.clj:
:compiler {:main hello-figwheel.core
:asset-path “js/compiled/out”
:output-to “resources/public/js/compiled/hello_figwheel.js”
:output-dir “resources/public/js/compiled/out”
:source-map-timestamp true
;; Para console.log CLJS en Chrome asegúrese de habilitar devtools
;; https://github.com/binaryage/cljs-devtools
:preloads [devtools.preload]}}
¿Cómo puedo decirle a Leiningen que compile hello-figwheel.core en resources/public/js/compiled/hello_figwheel.js y hello-figwheel.page2 en resources/public/js/compiled/page2.js?
Hay una pregunta similar. La diferencia con esta es que se usa Leiningen para ejecutar Figwheel.
Actualización 1: agregué lo siguiente al archivo project.clj:
{
:id “page2”
:source-paths [“src”]
:compiler {
:output-dir “resources/public/js/compiled/page2”
:output-to “resources/public/js/compiled/page2/main.js”
:main hello-figwheel.page2
:asset-path “js/compiled/out”
:source-map-timestamp true
;; Para console.log CLJS en Chrome asegúrese de habilitar devtools
;; https://github.com/binaryage/cljs-devtools
:preloads [devtools.preload]}
:figwheel {:on-jsload "hello-figwheel.page2/on-js-reload"
:open-urls ["http://localhost:3449/page2.html"]}
}
Cuando ejecuto lein figwheel, el REPL no puede conectarse a mi aplicación web. Dice “Prompt will show when Figwheel connects to your application”, pero nunca sucede.
Además, si abro http://localhost:3449/page2.html en el navegador, actualizo page2.cljs y actualizo la página en el navegador, los cambios no son visibles allí.
davy.ai
Para compilar
hello-figwheel.core
aresources/public/js/compiled/hello_figwheel.js
yhello-figwheel.page2
aresources/public/js/compiled/page2.js
usando Leiningen, debes modificar el archivoproject.clj
de la siguiente manera:En este archivo modificado
project.clj
se definen dos compilaciones,core
para el espacio de nombrehello-figwheel.core
ypage2
para el espacio de nombrehello-figwheel.page2
. Los archivos de salida para estas compilaciones se establecen enresources/public/js/compiled/hello_figwheel.js
yresources/public/js/compiled/page2.js
, respectivamente.Para ejecutar Figwheel y conectarte a tu aplicación, ejecuta
lein figwheel
en tu terminal. Si haces cambios enhello-figwheel.core
, se reflejarán enindex.html
. Si haces cambios enhello-figwheel.page2
, se reflejarán enpage2.html
.Si el REPL no puede conectarse a tu aplicación web, asegúrate de que tu navegador web esté ejecutándose y apuntando a
http://localhost:3449/`. Si los cambios que haces en
hello-figwheel.page2no son visibles en tu navegador cuando actualizas la página, verifica que
resources/public/page2.htmlesté haciendo referencia correctamente a
page2.js` de la siguiente manera:Si el directorio
src
contiene tantohello-figwheel.core.cljs
comohello-figwheel.page2.cljs
, entonces estás listo para continuar. De lo contrario, si están en directorios separados, modifica las rutas de los espacios de nombres en consecuencia.Esto debería permitirte ejecutar varias páginas en la misma aplicación Figwheel usando Leiningen.