Componer una gran aplicación Angular 2 con múltiples aplicaciones pequeñas dentro de

15

Después de 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 decidido utilizar Angular 2 (dado que es más adecuado para nuestro problema). / p>

Estamos en el negocio de las aplicaciones empresariales, que actualmente comprende muchas tecnologías front-end diferentes (aunque tenemos RESTful de back-end completo), y queríamos reemplazarlo todo y tener una tecnología única 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 crear como una aplicación independiente, pero el producto en sí mismo se encuentra en una única URL.

Example;

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 manera que el flujo de trabajo aparece de la siguiente manera.

  • SuperApp

    • autenticar usuario
    • Asistente para olvidar contraseña
    • Se puede acceder a la página pública sin autenticación
    • Usuario autenticado

      • Sistema de navegación

        • Inicio
          • Subproducto1
          • Subproducto2
          • Subproducto3
        • Perfil

          ...

          ...

        • Grupos

          ...

          ...

Tenga en cuenta que en la representación anterior, Sub-product1 y Sub-product2 son dos áreas completamente diferentes, con dominios empresariales completamente diferentes.

En lo que puedo pensar ahora mismo es que puedo crear SuperApp como un solo proyecto de Angular 2 con solo componentes y vistas que son relevantes para sí mismo, y SuperApp también es responsable de cargar varios aplicaciones infantiles; Sub-product1 , Sub-product2 (de nuevo, diferentes proyectos de Angular 2, que tienen sus propios package.json , webpack config, etc.) a través de componentes simples y actúan como un shell que proporciona enrutamiento de nivel superior y un marcador de posición para mantén esas aplicaciones infantiles.

Una vez, Sub-product1 se carga dentro del shell, agregará sus propias rutas a la ruta actual en la que ha aterrizado SuperApp.

La razón por la que quiero una separación es porque estas aplicaciones diferentes (que actualmente están compiladas con ExtJS) tienen equipos dedicados que trabajan en ello (somos una empresa con más de 500 desarrolladores), por lo que si tienen sus propios proyectos en Angular, pueden administre sus herramientas y dependencias a su gusto sin depender de la aplicación Grand Parent.

Pero no puedo encontrar en ninguna parte en documentos oficiales de Angular, o en la web, que si es posible tener aplicaciones Angular anidadas es posible (de tal manera que el código del marco sea compartido, mientras que las dependencias de las aplicaciones secundarias están completamente aisladas y cargadas solo cuando la aplicación lo necesita), o si existe algún enfoque alternativo para resolver tal problema.

Cualquier orientación o incluso enlaces a cualquier artículo relevante serán apreciados.

    
pregunta Kushal 05.08.2016 - 07:55

2 respuestas

1

Lo que estás describiendo lo sé por el módulo therm. Así que me referiré es como tal.

No voy a abordar la cuestión de si hay o no módulos de soporte angular por falta de conocimiento sobre el marco. Además, en mi opinión, realmente no quieres esto. Según tengo entendido, y espero que tu backend se refleje, quieres dividir todo en los bits más pequeños que puedas ( micro servicios ).

En este caso, cada punto en su diagrama debe ser su propia aplicación independiente. Seguro que deben comunicarse entre sí, de acuerdo con cada responsabilidad para componer la vista que describió. ¿Viste cómo Google tiene una URL / herramienta / sistema separada para la autenticación? Gmail no se preocupa por eso porque no es su responsabilidad. Incluso el esbozo de todas las herramientas es central en lugar de estar ubicado en cada herramienta (se ve esto en el diseño del material). Los activos viven fuera de cada proyecto / sistema.

Si lo hace, logrará una mayor palanca de reutilización y flexibilidad de sus sistemas. Aunque en equipos pequeños esto es insostenible debido a la complejidad y el tiempo. Ahora es tu trabajo averiguar dónde cae tu caso. Todo en microservicios y separación, todo en un paquete o en algún lugar en el medio. Y los módulos, si están disponibles, son algo que usarías dentro de cada punto.

    
respondido por el CesarScur 27.10.2018 - 22:12
1

Una opción: usted podría "vincular" (en lugar de usar enlaces SPA) a las sub-aplicaciones y hacer que cada sub-aplicación comparta una dependencia para el contenedor del sitio.

    
respondido por el jchook 27.12.2018 - 01:14