Este é um repositório de demonstração para Fulcro Rad. Ele inclui um diretório de origem compartilhado de arquivos que seria comum a qualquer projeto e, em seguida, separar os diretórios de origem que possuem arquivos específicos que seriam necessários para trabalhar com tecnologias específicas de back-end (atualmente SQL e Datomic).
Importante | Login é [email protected] com senha letmein . |
Observação | Pathom 3 é suportado. Consulte a ramificação pathom3 para uma versão que usa essa versão. Essa filial será mesclada assim que o P3 for considerado pronto para produção. |
RAD é um conjunto de bibliotecas para o Fulcro que você modela seus dados por meio de atributos . Um atributo é uma descrição de um fato em seu modelo de dados, que pode ter dados descritos (ALA RDF). Os componentes do Fulcro também podem receber atributos de dados. A combinação de componentes de anotação e o modelo de dados leva a ótimas sinergias, já que o próprio Fulcro já faz com que os componentes da interface do usuário participam do modelo de dados global do seu aplicativo.
O resultado é um sistema em que um grupo de atributos pode ser aproveitado para criar automaticamente:
Esquema de banco de dados
APIs de rede
Documentação
UIs que puxam exatamente o que precisam
Aplicativos que normalizam automaticamente seus dados do lado do cliente
Geração de forma e relatório
Modos de dados federados, onde um cluster de atributos pode realmente viver em locais díspares sob diferentes controle.
e muito mais.
O RAD inclui vários recursos que eu recomendaria em qualquer novo projeto de produção usando o Fulcro. Esta demonstração é uma boa referência sobre como configurar esse projeto; No entanto, Rad está mudando rapidamente, portanto, cuidado com a demonstração que pode estar um pouco desatualizada. Este não é um projeto de modelo por se, mas a abordagem RAD de projetar seu modelo de dados por meio de atributos que podem ser aproveitados para gerar muito do seu código de caldeira é bastante útil e poderoso em todos os estágios de desenvolvimento.
A demonstração deve ser relativamente fácil para um iniciante entender e mexer, e espero que sirva para inspirar você a aprender mais sobre Fulcro em geral; No entanto, se você não entender o Fulcro, terá dificuldade em dificuldades.
Os iniciantes devem, portanto, começar aprendendo a Fulcro Core por meio de exemplos do guia do desenvolvedor ou mesmo do https padrão //github.com/fulcrologic/fulcro-template. RAD não elimina a necessidade de entender a biblioteca principal. Rad é simplesmente algumas macros e padrões que aproveitam o Fulcro.
A versão SQL possui alguns bugs conhecidos. Se você quiser brincar com o RAD, use o adaptador de banco de dados do Datomic por enquanto.
Não, os elementos gerais do front-end do RAD podem ser alimentados por qualquer fonte de dados. O principal requisito é que exista um ponto "remoto" fulcro, capaz de suportar uma interface EQL. É trivial criar um controle remoto que use qualquer coisa de um banco de dados SQL em um servidor para navegar LocalSorage.
Você deve compilar a fonte CLJS para executar o cliente. Se você quiser editá-lo, basta iniciar um relógio Shadow-Cljs:
$ yarn
$ shadow-cljs watch main Se você não tiver yarn , use npm install .
O banco de dados de dados usado na demonstração é o Datomic Local. Ele usa um banco de dados de memória, o que simplifica a redação de uma demonstração fácil de executar. Para iniciar o WebApp em Datomic, use:
$ clj -A:dev:datomic
user= > (clojure.core/require ' development)
user=> (development/go) Isso semeará o banco de dados e iniciará o servidor da Web. O espaço para nome development inclui ajudantes para interromper/iniciar e reiniciar (com recarregar o código) o código do lado do servidor.
O código de exemplo deve funcionar com a maioria dos bancos de dados SQL (e os padrões para usar um dB H2 na memória). A fonte de dados está configurada no arquivo de configuração defaults.edn no diretório de origem SQL. Consulte a documentação do pool de conexão Hikaricp.
O exemplo do SQL possui um espaço para nome de development personalizado na pasta de origem src/sql , juntamente com os componentes necessários para executar esse servidor.
Você pode iniciar a versão do lado do servidor para SQL usando os aliases de DEPS que configuram o caminho de classe adequado:
$ clj -A:dev:sql
user= > (clojure.core/require ' development)
user=> (development/go) O código de exemplo para componentes XTDB está na pasta src/xtdb , juntamente com um development.clj personalizado.clj. Os nós do XTDB são configurados por um mapa em :roterski.fulcro.rad.database-adapters.xtdb/databases Chave no defaults.edn .
Você pode executá -lo com o :xtdb deps alias:
$ clj -A:dev:xtdb
user= > (clojure.core/require ' development)
user=> (development/go) O código de exemplo para componentes asami está na pasta src/asami , juntamente com um development.clj personalizado.clj. Asami são configurados por um mapa em ::cz.holyjak.rad.database-adapters.asami/databases Chave no defaults.edn .
Você pode executá -lo com o :asami DEPS ALIAS:
$ clj -A:dev:asami
user= > (clojure.core/require ' development)
user=> (development/go) O development/restart interromperá o servidor, recarregará a fonte e iniciará o servidor.
Rad usa várias bibliotecas diferentes de uma só vez. É ideal que você consulte a fonte de todos eles e configure seus depositores para que você possa executar a fonte de todos de uma só vez. Você também pode atualizar o set-refresh-dirs de names de desenvolvimento para apontar para esses diretórios de origem adicionais no CLJ, para que você receba a recarga adequada lá.
O desenvolvimento muito ativo que estou fazendo faz alterações em 5 projetos de uma só vez (Fulcro, Fulcro Rad, Fulcro Rad Datomic, Fulcro Rad SQL e essa demonstração). Não garanto que vou manter tudo sincronizado no que diz respeito às versões no arquivo DEPS. Pessoalmente, defino o seguinte no meu nível 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, em Intellij (ou na linha de comando), posso trabalhar de fontes locais para todos eles. Eu tento me lembrar de empurrar instantâneos diariamente, mas se eu esquecer e você vir algum erro de símbolo ausente ou as coisas estão quebradas, é quase certamente o porquê.
Executar Shadow e CLJ ficariam assim na linha 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 No Intellij, você simplesmente executaria um CLJ Repl com o ClassPath atual e usará as caixas de seleção Alias e o botão + na guia Clojure Deps para configurá -lo.
A Licença do MIT (MIT) Copyright (C), Fulcrologic, LLC
A permissão é concedida, gratuita, a qualquer pessoa que obtenha uma cópia deste software e arquivos de documentação associados (o "software"), para lidar com o software sem restrição, inclusive sem limitação os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, mobilizar o software e/ou vender cópias do software e permitir que as pessoas a quem
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou em partes substanciais do software.
O software é fornecido "como está", sem garantia de qualquer tipo, expresso ou implícito, incluindo, entre outros, as garantias de comercialização, aptidão para uma finalidade específica e não innoculação. Em nenhum caso os autores ou detentores de direitos autorais serão responsáveis por qualquer reclamação, danos ou outro passivo, seja em uma ação de contrato, delito ou não, decorrente de, fora ou em conexão com o software ou o uso ou outras negociações no software.