Las estructuras de sitios web MVC (Model View Controller) no varian mucho, ya que MVC es justamente un patrón de diseño que no especifica como ordenar nuestra vista y desacoplarla de nuestro modelo. Pueden leer mas de MVC aca.

Para el caso de NodeJS, hace tiempo que vengo armando y buscando en internet cual sería la mejor forma de organizar la estructura de nuestro sitio web para tener algo escalable … y en serio.

Llegué a una conclusión (y escucho con toda atención y felicidad propuestas de mejora):

/app-root
  /models

  /controllers

  /views

  /public
    /images
    /styles
    /scripts

  /tests

  /utils

  app.js
  package.json
 

Con algunas variaciones a lo que puede ser una apliación en .NET, Java, PHP, o cualquier otra … está es la estructura que, por el momento, me cierra mas.

Repasando un poco la estructura inicial de nuestro sitio web MVC en NodeJS en nuestro app.js vamos a tener el servidor … el famoso require(‘http’).createServer();, o en su defecto, un web framework.

También tenemos en el root el package.json donde vamos a especificar la info de nuestro paquete (o app) con sus dependencias (Package.json). Despues es básicamente lo de siempre, la carpeta public con las imagenes, .css y .js (client-side); el modelo, los controladores y las vistas (html, o bien utilizando algún ViewEngine como puede ser Ejs o Jade, entre otros). Y por último dejamos una carpetita utils para los modulos externos a nuestro web server, como puede ser socketIO.

En el próximo post vamos a ver como integrar en esta estructura un web framework, especificamente ExpressJS.