El conducto es un marco altamente modular para construir aplicaciones del lado del servidor en Clojure utilizando arquitectura basada en datos.
Es similar en alcance a Arachne, y se basa en Integrant. El conducto construye aplicaciones en torno a una configuración inmutable que actúa como un plan estructural. La configuración se puede manipular y consultar para producir un comportamiento sofisticado.
Ver: Actualización.md.
Para crear un nuevo proyecto de conducto con Leiningen:
lein new duct < your project name >Esto creará un proyecto de conducto mínimo. Puede extender esto agregando sugerencias de perfil para agregar funcionalidad adicional.
+api agrega el middleware y los manejadores API+ataraxy agrega el enrutador de ataraxy+cljs agrega compilación de Clojurescript y carga caliente+example agrega un manejador de ejemplo+heroku agrega configuración para implementar a Heroku+postgres agrega un componente de dependencia y base de datos de PostgreSQL+site agrega el middleware del sitio, un favicon, webjars y más+sqlite agrega un componente de dependencia y base de datos de SQLitePor ejemplo:
lein new duct foobar +site +example Al igual que con todas las plantillas de Leiningen, Duct creará un nuevo directorio con el mismo nombre que su proyecto. Para obtener información sobre cómo ejecutar y construir su proyecto, consulte el archivo README.md del proyecto.
La estructura de la aplicación se define mediante un mapa de configuración integrante.
En el desarrollo, Duct utiliza el flujo de trabajo recargado de Stuart Sierra.
En producción, Duct sigue la metodología de la aplicación de doce factores.
El estado local se prefiere sobre el estado global.
Los espacios de nombres deben agrupar las funciones por propósito, en lugar de por capa.
Los protocolos deben usarse para envolver API externos.
El conducto agrega una capa de abstracción sobre Integrant. En Integrant, se inicia un mapa de configuración en un mapa del sistema en ejecución.
┌────────┐ ┌────────┐
│ config ├──>│ system │
└────────┘ └────────┘
En el conducto, la configuración se inicia dos veces. La configuración se inicia primero en una configuración intermedia, que a su vez se inicia en el sistema:
┌────────┐ ┌──────────────┐ ┌────────┐
│ config ├──>│ intermediate ├──>│ system │
└────────┘ └──────────────┘ └────────┘
De la misma manera que las funciones de orden superior nos permiten abstraer patrones comunes de código, las configuraciones en capas del conducto nos permiten abstraer patrones de configuración comunes.
Se espera que las claves en una configuración del conducto se inicien en funciones que transforman un mapa de configuración. Hay dos tipos amplios: perfiles , que fusionan su valor en la configuración, y los módulos , que proporcionan una manipulación más compleja.
Los proyectos del conducto se estructuran como se muestra a continuación. Los archivos marcados con A * se mantienen fuera del control de versiones.
Copyright © 2021 James Reeves
Distribuido bajo la licencia MIT.