Después de largos 3 meses de debate e investigación para elegir entre React (con Redux) y Angular 2, el equipo de front-end de mi empresa ha concluido con Angular 2 (dado que es más adecuado para nuestro problema).
Estamos en el negocio de las aplicaciones empresariales, que actualmente se compone de muchas tecnologías front-end diferentes (a la vez que tiene RESTful backend completo), y queríamos reemplazarlo todo y tener una sola tecnología para facilitar la capacitación futura y el control de calidad.
Dada la naturaleza de nuestro producto, es enorme, y hay módulos dentro, que son en sí mismos un dominio diferente y se pueden hacer como una aplicación independiente, pero el producto en sí vive en una sola URL.
Ejemplo;
Llamemos a mi producto como SuperApp.
Como interfaz de usuario, SuperApp tiene un sistema de inicio de sesión estándar y navegación a módulos / subproductos secundarios, de modo que el flujo de trabajo aparece de la siguiente manera.
SuperApp
- Autenticar usuario
- Olvídate del asistente de contraseña
- Página pública accesible sin autenticación
Usuario autenticado
Sistema de navegación
- Hogar
- Subproducto1
- Subproducto2
- Subproducto3
Perfil
...
...
Grupos
...
...
- Hogar
Tenga en cuenta que en la representación anterior, Sub-product1
y Sub-product2
son dos áreas completamente diferentes, que tienen dominios comerciales completamente diferentes.
Lo que puedo pensar ahora es que puedo crear SuperApp como un solo proyecto de Angular 2 que solo tiene componentes y vistas que son relevantes para sí mismo, y SuperApp también es responsable de cargar múltiples aplicaciones secundarias; Sub-product1
, Sub-product2
(de nuevo, diferentes proyectos de Angular 2, que tienen su propio package.json
, webpack
configuración, etc.) a través de componentes tontos, y actúan como un shell que proporciona enrutamiento de nivel superior y un marcador de posición para guardar esas aplicaciones secundarias.
Una vez que Sub-product1
se carga dentro del shell, agregará sus propias rutas a la ruta actual en la que SuperApp ha aterrizado.
La razón por la que quiero la separación es porque estas diferentes aplicaciones (que actualmente se crean utilizando ExtJS) tienen equipos dedicados trabajando en ello (somos una empresa que tiene más de 500 desarrolladores), por lo que si tienen sus propios proyectos angulares, pueden administrar sus herramientas y dependencias a su gusto sin depender de la aplicación Grand Parent.
Pero no puedo encontrar en ningún lugar en los documentos oficiales de Angular, o en la web que si es posible tener aplicaciones angulares anidadas (de tal manera que el código marco se comparte mientras las dependencias de las aplicaciones secundarias están completamente aisladas y cargadas solo cuando la aplicación lo necesita), o si hay algún enfoque alternativo para resolver dicho problema.
Cualquier orientación o incluso enlaces a artículos relevantes serán apreciados.