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 personalizarclasses/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 (llamadosSchemas
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.