Estructura de proyecto web-app modular y control de versiones

Intento escribir una colección de complementos para CakePHP y tener algunos problemas para estructurar varias partes del proyecto. Sé que esto probablemente se haya preguntado un par de veces antes y encontré algunos temas relacionados en SO, pero ninguna solución realmente satisfactoria.

Algunos requisitos:

  • Los diferentes modules están ligeramente acoplados, sin embargo, todos dependen de un module central .

  • Algunos modules de hecho interactúan entre sí, por ejemplo, los modules pueden registrar páginas de tablero, si encuentran que el module de panel está presente.

  • El module central proporciona classs base PHP así como modules RequireJS que los otros pueden henetworkingar / usar.

  • Sería bueno tener diferentes tags de versión por module para verificar la compatibilidad.

Mis problemas:

  • ¿Cómo debo abordar el control de versiones? Hice algunos prototypes con un repository de Git, que resultó algo insatisfactorio, especialmente porque solo podía asignar una label para todos los modules. ¿Los submodules de Git son el path a seguir aquí?

    También podría crear repositorys para cada module, lo que parece engorroso, especialmente porque los cambios en el núcleo podrían requerir cambios en los modules dependientes, lo que tendría sentido hacer en la misma twig (¿o no?).

  • ¿Dónde debería poner el código de Javascript? Dado que la mayoría de los modules dependerán de algunos modules RequireJS básicos , tendría sentido mantenerlos en un solo lugar y dejar que Grunt distribuya las versiones minificadas en sus respectivas ubicaciones Javascript de CakePHP-Plugin.

    Esto naturalmente plantearía algunos problemas con SCM.

Realmente no tengo ninguna experiencia con este tipo de estructura, ¿cuál es el enfoque general aquí?

Este es solo mi enfoque, espero que ayude.

¿Cómo debo abordar el control de versiones? Hice algunos prototypes con un repository de Git, que resultó algo insatisfactorio, especialmente porque solo podía asignar una label para todos los modules. ¿Los submodules de Git son el path a seguir aquí?

También podría crear repositorys para cada module, lo que parece engorroso, especialmente porque los cambios en el núcleo podrían requerir cambios en los modules dependientes, lo que tendría sentido hacer en la misma twig (¿o no?).

Para cada module, creo un nuevo Repo. En CakePHP estos se llaman complementos. Los complementos son muy útiles para cosas como un visor de logging o una herramienta básica que utiliza. Puedes usar el compositor para instalar los complementos, lo que hace que sea muy fácil actualizar tu aplicación una vez probados localmente. Además, utilizamos este método en la empresa para la que trabajo. La única diferencia es que hacemos que el repository de complementos sea privado en lugar de público porque no queremos que el mundo use el código, ya que es una aplicación de CRM muy privada.

Más información sobre este tema:

¿Dónde debería poner el código de Javascript? Dado que la mayoría de los modules dependerán de algunos modules RequireJS básicos, tendría sentido mantenerlos en un solo lugar y dejar que Grunt distribuya las versiones minificadas en sus respectivas ubicaciones Javascript de CakePHP-Plugin.

Si el JavaScript es solo para 1 complemento y 1 solo, entonces debe colocarlo en su carpeta myplugin / webroot / js / del complemento. Porque pertenece allí. Cuando tiene JavaSript que es utilizado por varios complementos, o incluso por la aplicación central en sí, colóquelo en la carpeta de su aplicación / webroot / js, porque eso tiene más sentido cuando ingresa a su código como un nuevo desarrollador.

Tenga en count lo que dice la documentation en http://book.cakephp.org/2.0/en/plugins.html#plugin-assets .


Si aún tiene algunas preguntas con respecto a mi "respuesta", por favor pregunte en los comentarios a continuación. Espero que esto te ayude de alguna manera.

Intereting Posts