Este es un repositorio de demostración para FulCro Rad. Incluye un directorio de origen compartido de archivos que serían comunes a cualquier proyecto, y luego separar directorios de origen que tienen archivos específicos que serían necesarios para trabajar con tecnologías de back-end específicas (actualmente SQL y Datomic).
Importante | El inicio de sesión es [email protected] con contraseña letmein . |
Nota | Pathom 3 es compatible. Vea la rama pathom3 para una versión que usa esa versión en su lugar. Esa rama se fusionará tan pronto como P3 se considera listo para la producción. |
RAD es un conjunto de bibliotecas para FulCro que le hacen modelar sus datos a través de atributos . Un atributo es una descripción de un hecho en su modelo de datos, que en sí mismo puede tener datos descritivos (ALA RDF). Los componentes FulCro también se pueden dar atributos de datos. La combinación de componentes de anotación y el modelo de datos conduce a algunas sinergias excelentes, ya que FulCro ya tiene los componentes de la UI participan en el modelo de datos global de su aplicación.
El resultado es un sistema en el que se puede aprovechar un grupo de atributos para crear automáticamente:
Esquema de base de datos
API de redes
Documentación
Uis que tiran exactamente lo que necesitan
Aplicaciones que normalizan automáticamente sus datos del lado del cliente
Generación de formulario e informes
Modos de datos federados, donde un clúster de atributos en realidad puede vivir en ubicaciones dispares bajo diferentes controles.
y mucho más.
RAD incluye una serie de características que recomendaría en cualquier nuevo proyecto de producción utilizando FulCro. Esta demostración es una buena referencia sobre cómo configurar dicho proyecto; Sin embargo, RAD está cambiando rápidamente, así que tenga cuidado con que esta demostración pueda estar algo desactualizada. Este no es un proyecto de plantilla por-SE, pero el enfoque RAD de diseñar su modelo de datos a través de atributos que luego se pueden aprovechar para generar gran parte de su código de planta de calderas es bastante útil y poderoso en todas las etapas de desarrollo.
La demostración debería ser relativamente fácil incluso para un principiante entender y jugar, y espero que sirva para inspirarlo a aprender más sobre Fulcro en general; Sin embargo, si no comprende FulCro, entonces rápidamente tendrá dificultades.
Por lo tanto, los principiantes deben comenzar aprendiendo el núcleo FulCro a través de ejemplos de la Guía del desarrollador o incluso de la estándar https://github.com/fulCrologic/fulCro-Template. RAD no elimina la necesidad de comprender la biblioteca central. RAD es simplemente algunas macros y patrones que aprovechan FulCro.
La versión SQL tiene algunos errores conocidos. Si desea jugar con RAD, use el adaptador de base de datos Datomic por ahora.
No, los elementos generales de front-end de RAD podrían ser alimentados por ninguna fuente de datos. El requisito principal es que exista un "remoto" FulCro que puede admitir una interfaz EQL. Es trivial construir un control remoto que use cualquier cosa, desde una base de datos SQL en un servidor hasta navegador LocalStorage.
Debe compilar la fuente CLJS para ejecutar el cliente. Si desea poder editarlo, simplemente comience un reloj Shadow-Cljs:
$ yarn
$ shadow-cljs watch main Si no tiene yarn , use npm install en su lugar.
La base de datos Datomic utilizada en la demostración es Datomic Local. Utiliza una base de datos en memoria, lo que hace que escribir sea una demostración fácil de ejecutar simple. Para iniciar la aplicación web en Datomic, use:
$ clj -A:dev:datomic
user= > (clojure.core/require ' development)
user=> (development/go) Esto sembrará la base de datos e iniciará el servidor web. El espacio de nombres development incluye ayudantes para detener/comenzar y reiniciar (con el código de recarga) el código del lado del servidor.
El código de ejemplo debe funcionar con la mayoría de las bases de datos SQL (y el valor predeterminado se usa en una DB H2 en memoria). La fuente de datos está configurada en el archivo de configuración defaults.edn en el directorio de origen SQL. Vea la documentación del grupo de conexión Hikaricp.
El ejemplo de SQL tiene un espacio de nombres development personalizado en la carpeta de origen src/sql , junto con los componentes necesarios para ejecutar ese servidor.
Puede iniciar la versión del lado del servidor para SQL utilizando los alias DEPS que configuran el ClassPath adecuado:
$ clj -A:dev:sql
user= > (clojure.core/require ' development)
user=> (development/go) El código de ejemplo para componentes XTDB está en la carpeta src/xtdb , junto con un development.clj personalizado.clj. Los nodos XTDB están configurados por un mapa en :roterski.fulcro.rad.database-adapters.xtdb/databases en defaults.edn .
Puedes ejecutarlo con el :xtdb Deps alias:
$ clj -A:dev:xtdb
user= > (clojure.core/require ' development)
user=> (development/go) El código de ejemplo para los componentes ASAMI está en la carpeta src/asami , junto con un development.clj personalizado.clj. ASAMI está configurado por un mapa en ::cz.holyjak.rad.database-adapters.asami/databases en defaults.edn .
Puedes ejecutarlo con el alias :asami Deps:
$ clj -A:dev:asami
user= > (clojure.core/require ' development)
user=> (development/go) El development/restart detendrá el servidor, recargará la fuente e iniciará el servidor.
RAD usa varias bibliotecas diferentes a la vez. Es ideal que consulte la fuente de todos ellos y configure sus DEPS para que pueda correr desde la fuente de todos a la vez. También es posible que desee actualizar el set-refresh-dirs en el espacio de nombres de desarrollo para apuntar en esos directorios de origen adicionales en CLJ para que obtenga la recarga adecuada allí.
El desarrollo muy activo que estoy haciendo realiza cambios en 5 proyectos a la vez (FulCro, FulCro Rad, FulCro Rad Datomic, FulCro Rad SQL y esta demostración). No garantizo que mantendré todo en sincronía en cuanto a versiones en el archivo DEPS. Personalmente establecí lo siguiente en mi nivel superior ~/.clojure/deps.edn :
{:aliases {:f3-dev {:override-deps {com.fulcrologic/fulcro {:local/root "/Users/tonykay/fulcrologic/fulcro"
:exclusions [com.taoensso/sente]}}}
:rad-dev {:override-deps {com.fulcrologic/fulcro-rad {:local/root "/Users/username/fulcrologic/fulcro-rad"}
com.fulcrologic/fulcro-rad-sql {:local/root "/Users/username/fulcrologic/fulcro-rad-sql"}
com.fulcrologic/fulcro-rad-semantic-ui {:local/root "/Users/username/fulcrologic/fulcro-rad-semantic-ui"}
com.fulcrologic/fulcro-rad-datomic {:local/root "/Users/username/fulcrologic/fulcro-rad-datomic"
:exclusions [com.datomic/datomic-free]}}}}}para que en IntelliJ (o en la línea de comandos) pueda trabajar desde fuentes locales para todos ellos. Trato de recordar impulsar las instantáneas a diario, pero si me olvido y ves que faltan un error de símbolo o las cosas están rotas, eso es casi seguro por qué.
Correr Shadow y CLJ se verían así desde la línea de comando:
# in one terminal
$ shadow-cljs -A:f3-dev:rad-dev watch main
# in another terminal
$ clj -A:dev:f3-dev:rad-dev:datomic En IntelliJ, simplemente se aseguraría de ejecutar un CLJ Reply con ClassPath actual y usar las casillas de verificación de alias y el botón + en la pestaña Deps Clojure para configurarlo.
La licencia MIT (MIT) Copyright (c), FulCrologic, LLC
El permiso se otorga, de forma gratuita, a cualquier persona que obtenga una copia de este software y archivos de documentación asociados (el "software"), para tratar en el software sin restricción, incluidos los derechos de los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicense y/o vender copias del software, y para permitir que las personas a quienes se les proporciona el software para hacer, sujeto a las siguientes condiciones: las siguientes condiciones: las siguientes condiciones: las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o porciones sustanciales del software.
El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular y no infracción. En ningún caso los autores o titulares de derechos de autor serán responsables de cualquier reclamo, daños u otra responsabilidad, ya sea en una acción de contrato, agravio o de otra manera, que surge, de o en relación con el software o el uso u otros tratos en el software.