Il s'agit d'un référentiel de démonstration pour Fulcro Rad. Il comprend un répertoire source partagé de fichiers qui serait commun à tout projet, puis des répertoires source séparés qui ont des fichiers spécifiques qui seraient nécessaires pour travailler avec des technologies back-end spécifiques (actuellement SQL et Datomic).
Important | Connexion est [email protected] avec le mot de passe letmein . |
Note | Pathom 3 est pris en charge. Voir la branche pathom3 pour une version qui utilise cette version à la place. Cette branche sera fusionnée dès que P3 sera considérée comme prêt pour la production. |
RAD est un ensemble de bibliothèques pour Fulcro qui vous font modéliser vos données via des attributs . Un attribut est une description d'un fait dans votre modèle de données, qui peut lui-même avoir des données décortiquées (ALA RDF). Les composants Fulcro peuvent également recevoir des attributs de données. La combinaison de composants annotants et du modèle de données conduit à de grandes synergies, car Fulcro lui-même a déjà les composants de l'interface utilisateur participer au modèle de données global de votre application.
Le résultat est un système où un groupe d'attributs peut être exploité pour créer automatiquement:
Schéma de base de données
API de réseautage
Documentation
Uis qui tirent exactement ce dont ils ont besoin
Applications qui normalisent automatiquement leurs données côté client
Génération de formulaire et de rapport
Modes de données fédérés, où un groupe d'attributs peut réellement vivre dans des emplacements disparates sous un contrôle différent.
Et bien plus encore.
RAD comprend un certain nombre de fonctionnalités que je recommanderais dans tout nouveau projet de production utilisant Fulcro. Cette démo est une bonne référence pour créer un tel projet; Cependant, RAD change rapidement, alors méfiez-vous que cette démo peut être quelque peu obsolète. Ce n'est pas un projet de modèle par SE, mais l'approche RAD de la conception de votre modèle de données via des attributs qui peuvent ensuite être exploités pour générer une grande partie de votre code passerelle est très utile et puissant à toutes les étapes du développement.
La démo devrait être relativement facile pour un débutant à comprendre et à bricoler, et j'espère qu'il servira à vous inspirer à en savoir plus sur Fulcro en général; Cependant, si vous ne comprenez pas Fulcro, vous rencontrerez très rapidement des difficultés.
Les débutants doivent donc commencer par apprendre le noyau Fulcro via des exemples du Guide du développeur ou même le https://github.com/fulcrologic/fulcro-template standard. RAD n'élimine pas la nécessité de comprendre la bibliothèque de base. RAD est simplement quelques macros et motifs qui exploitent Fulcro.
La version SQL a des bogues connus. Si vous souhaitez jouer avec RAD, utilisez l'adaptateur de base de données Datomic pour l'instant.
Non, les éléments généraux frontaux de RAD n'ont pu être alimentés par aucune source de données. La principale exigence est qu'il existe une "télécommande" Fulcro qui est capable de prendre en charge une interface EQL. Il est trivial de créer une télécommande qui utilise tout ce qui est à partir d'une base de données SQL sur un serveur pour naviguer localstorage.
Vous devez compiler la source CLJS pour exécuter le client. Si vous voulez pouvoir le modifier, commencez simplement une montre Shadow-Cljs:
$ yarn
$ shadow-cljs watch main Si vous n'avez pas yarn , utilisez npm install à la place.
La base de données Datomic utilisée dans la démo est la datomique locale. Il utilise une base de données en mémoire, ce qui rend l'écriture d'une démo facile à gérer. Pour démarrer le WebApp dans Datomic, utilisez:
$ clj -A:dev:datomic
user= > (clojure.core/require ' development)
user=> (development/go) Cela semera la base de données et démarrera le serveur Web. L'espace de noms development comprend des aides pour arrêter / démarrer et redémarrer (avec rechargement de code) le code côté serveur.
L'exemple de code doit fonctionner avec la plupart des bases de données SQL (et par défaut en utilisant une dB H2 en mémoire). La source de données est configurée dans le fichier de configuration defaults.edn dans le répertoire source SQL. Voir la documentation du pool de connexions HikaricP.
L'exemple SQL a un espace de noms development personnalisé dans le dossier source src/sql , ainsi que les composants nécessaires pour exécuter ce serveur.
Vous pouvez démarrer la version côté serveur pour SQL à l'aide des alias DEPS qui configurent le chemin de classe approprié:
$ clj -A:dev:sql
user= > (clojure.core/require ' development)
user=> (development/go) L'exemple de code pour les composants XTDB se trouve dans le dossier src/xtdb , ainsi qu'un development.clj personnalisé.clj. Les nœuds XTDB sont configurés par une carte sous :roterski.fulcro.rad.database-adapters.xtdb/databases Key in defaults.edn .
Vous pouvez l'exécuter avec l'alias :xtdb DEPS:
$ clj -A:dev:xtdb
user= > (clojure.core/require ' development)
user=> (development/go) L'exemple de code pour les composants ASAMI se trouve dans le dossier src/asami , ainsi qu'un development.clj personnalisé.clj. Asami est configuré par une carte sous ::cz.holyjak.rad.database-adapters.asami/databases dans defaults.edn .
Vous pouvez l'exécuter avec le :asami Deps Alias:
$ clj -A:dev:asami
user= > (clojure.core/require ' development)
user=> (development/go) Le development/restart arrêtera le serveur, rechargera la source et démarrera le serveur.
RAD utilise plusieurs bibliothèques différentes à la fois. Il est idéal que vous vérifiiez la source de tous ceux-ci et que vous configriez vos DEP afin que vous puissiez courir à partir de la source de tous en même temps. Vous pouvez également mettre à jour le set-refresh-dirs dans l'espace de noms de développement pour pointer de ces répertoires source supplémentaires en CLJ afin que vous y rechargez correctement.
Le développement très actif que je fais apporte des modifications à 5 projets à la fois (Fulcro, Fulcro Rad, Fulcro Rad Datomic, Fulcro Rad SQL et cette démo). Je ne garantis pas que je garderai tout en synchronisation en ce qui concerne les versions du fichier DEPS. J'ai défini personnellement ce qui suit dans mon niveau supérieur ~/.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]}}}}}de sorte que dans Intellij (ou sur la ligne de commande), je peux travailler à partir de sources locales pour tous. J'essaie de me rappeler de pousser les instantanés quotidiennement, mais si j'oublie et que vous voyez une erreur de symbole manquante ou si les choses sont cassées, c'est presque pourquoi.
Running Shadow et CLJ ressembleraient à ceci à partir de la ligne de commande:
# in one terminal
$ shadow-cljs -A:f3-dev:rad-dev watch main
# in another terminal
$ clj -A:dev:f3-dev:rad-dev:datomic Dans Intellij, vous vous assurez simplement d'exécuter un CLJ REPL avec le chemin de classe actuel et d'utiliser les cases à cocher Alias et le bouton + dans l'onglet Clojure Deps pour le configurer.
La licence MIT (MIT) Copyright (C), Fulcrologic, LLC
L'autorisation est accordée gratuitement à toute personne qui obtient une copie de ce logiciel et des fichiers de documentation associés (le "logiciel"), pour traiter le logiciel sans restriction, y compris sans limiter les droits d'utilisation, de copie, de modification, de fusion, de publication, de distribution, de sublince et / ou de vendre des copies des conditions suivantes.
L'avis de droit d'auteur ci-dessus et le présent avis d'autorisation sont inclus dans toutes les copies ou des parties substantielles du logiciel.
Le logiciel est fourni "tel quel", sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier et de non-contrefaçon. En aucun cas, les auteurs ou les détenteurs de droits d'auteur ne seront pas responsables de toute réclamation, dommage ou autre responsabilité, que ce soit dans une action de contrat, de délit ou autre, découlant de, hors du logiciel ou de l'utilisation ou d'autres relations dans le logiciel.