estructura de carpetas para la stack MEAN

Estoy siguiendo un tutorial en la stack MEAN y me gustaría tener una estructura de carpetas limpia para trabajar. He leído muchos artículos que dicen tener una carpeta para cada módulo (llamémoslo) de la aplicación con las vistas / modelos / controladores / etc. agrupados.

Me gusta este enfoque y ya he empezado a hacer esto, sin embargo, me gustaría algo de ayuda.

En este momento, mi estructura de directorios se ve algo como esto:

  • raíz
    • puntos de vista
    • modelos
    • rutas
    • público

Hasta ahora, tengo una vista de index principal con su controlador angular, así que lo que hice es crear una nueva carpeta en public y nombrarla index

Cualquier cosa con un asterisco es una carpeta (*)

  • raíz*
    • público*
      • índice*
        • index.ejs
        • angular*
          • indexController.js
          • someService.js
        • estilos *
          • AlgunosCs.Css
        • javascript *
          • Algunos archivos jQuery o js
      • otra carpeta de vista hipotética *
        • otroIndex.ejs
        • angular*
          • otroController.js
          • someService.js
        • estilos *
          • AlgunosCs.Css
        • javascript *
          • Algunos archivos jQuery o js

La primera pregunta es, ¿es esto bueno hasta ahora? ¿Todo esto pertenece a la carpeta pública?

Mi segundo tiene que ver con el extremo posterior. Estoy empezando a construir algunos modelos y el tutorial dice colocarlos en la carpeta de models . Sin embargo, prefiero mantener los modelos con sus respectivos “módulos”, por lo que el modelo de índice prefiero poner en la carpeta donde vive la vista del índice. probablemente cree una nueva carpeta bajo el índice llamada models y agréguela allí:

  • raíz*
    • público*
      • índice*
        • index.ejs
        • angular*
          • indexController.js
          • someService.js
        • estilos *
          • AlgunosCs.Css
        • javascript *
          • Algunos archivos jQuery o js
        • modelo (s) *
          • someModel.js

pero este no parece ser el lugar adecuado para colocar un archivo modelo, ya que esta es la carpeta pública, y un modelo es un código de fondo. ¿Hay un mejor enfoque de lo que estoy haciendo? ¿O debería tener los modelos solo en la carpeta principal de modelos? ¿y simplemente agrupar el extremo frontal por ‘módulo’ mientras que todos los modelos se sientan juntos en la carpeta de modelos?

La nueva stack MEAN js sigue un enfoque diferente y ya no tienen una carpeta del lado del servidor y una carpeta del lado del cliente separadas. Ahora la separación es a nivel de módulo.

introduzca la descripción de la imagen aquí

Puede ver que cada módulo tiene cliente, servidor y carpeta de prueba. Para más información puedes consultar su último repository .

Se me ocurrió mi propia estructura. Esto me ayudó durante un proyecto. Cada * marca una carpeta.

app carpeta de app es para el Backend y public para el Frontend.

  • raíz*
    • aplicación *
      • controladores *
        • main.controller.js
      • modelos *
        • usuario.model.js
      • rutas *
        • usuario.ruta.js
      • pruebas *
        • user.test.js
      • puntos de vista*
        • 404.html
    • activo*
      • complementos *
      • bibliotecas externas *
    • bower_components *
    • config *
      • db.js
    • nodo_módulos *
    • público*
      • controladores *
        • main.controller.js
      • módulos *
        • main.module.js
      • servicios
        • main.service.js
      • puntos de vista
        • usuario.html
        • home.html
        • index.html
    • Bower.json
    • paquete.json
    • server.js