Saltar al contenido

Estructura de carpetas para un proyecto de Node.js

Agradecemos tu ayuda para compartir nuestros posts sobre las ciencias de la computación.

Solución:

Con respecto a las carpetas que mencionaste:

  • /libs generalmente se usa para personalizar classes/functions/modules
  • /vendor o /support contiene bibliotecas de terceros (agregadas como submódulo de git cuando se usa git como control de fuente)
  • /spec contiene especificaciones para pruebas BDD.
  • /tests contiene las pruebas unitarias para una aplicación (usando un marco de prueba, ver aquí)

NOTA: ambos /vendor y /support están en desuso desde que NPM introdujo una gestión de paquetes limpia. Se recomienda manejar todas las dependencias de terceros mediante NPM y un archivo package.json

Al crear una aplicación bastante grande, recomiendo las siguientes carpetas adicionales (especialmente si está utilizando algún tipo de MVC-/ORM-Framework como express o mongoose):

  • /models contiene todos sus modelos ORM (llamados Schemas en mangosta)
  • /views contiene sus plantillas de vista (utilizando cualquier lenguaje de plantillas admitido en express)
  • /public contiene todo static contenido (imágenes, hojas de estilo, JavaScript del lado del cliente)
    • /assets/images contiene archivos de imagen
    • /assets/pdf contiene static archivos pdf
    • /css contiene hojas de estilo (o salida compilada por un motor css)
    • /js contiene JavaScript del lado del cliente
  • /controllers contener todas sus rutas express, separadas por módulo/área de su aplicación (nota: cuando se usa la funcionalidad de arranque de express, esta carpeta se llama /routes)

Me acostumbré a organizar mis proyectos de esta manera y creo que funciona bastante bien.

Actualización para aplicaciones Express basadas en CoffeeScript (usando activos de conexión):

  • /app contiene su JavaScript compilado
  • /assets/ contiene todos los activos del lado del cliente que requieren compilación
    • /assets/js contiene sus archivos CoffeeScript del lado del cliente
    • /assets/css contiene todas sus hojas de estilo LESS/Stylus
  • /public/(js|css|img) contiene tu static archivos que no son manejados por ningún compilador
  • /src contiene todos los archivos CoffeeScript específicos del lado del servidor
  • /test contiene todos los scripts de prueba de unidad (implementados usando un marco de prueba de su elección)
  • /views contiene todas sus vistas expresas (ya sea jade, ejs o cualquier otro motor de plantillas)

Hay una discusión en GitHub debido a una pregunta similar a esta: https://gist.github.com/1398757

Puede usar otros proyectos como guía, busque en GitHub para:

  • ThreeNodes.js: en mi opinión, parece tener una estructura específica que no es adecuada para todos los proyectos;
  • más ligero: una estructura más simple, pero le falta un poco de organización;

Y finalmente, en un libro (http://shop.oreilly.com/product/0636920025344.do) sugiere esta estructura:

├── index.html
├── js/
│   ├── main.js
│   ├── models/
│   ├── views/
│   ├── collections/
│   ├── templates/
│   └── libs/
│       ├── backbone/
│       ├── underscore/
│       └── ...
├── css/
└── ...

Más ejemplos de la arquitectura de mi proyecto que puedes ver aquí:

├── Dockerfile
├── README.md
├── config
│   └── production.json
├── package.json
├── schema
│   ├── create-db.sh
│   ├── db.sql
├── scripts
│   └── deploy-production.sh 
├── src
│   ├── app -> Containes API routes
│   ├── db -> DB Models (ORM)
│   └── server.js -> the Server initlializer.
└── test

Básicamente, la aplicación lógica se separó en las carpetas DB y APP dentro del directorio SRC.

Recuerda que puedes difundir este post si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *