tutorial sesiones page manejo español change angular typescript web frontend

sesiones - page title angular 4



¿Por qué necesito un servidor HTTP para ejecutar Angular 2? (5)

Vengo del Java/Spring back-end Java/Spring tradicional para aprender el Angular 2 framework , y tengo dificultades para comprender muchos de los conceptos fundamentales.

Estoy leyendo Manning book Angular 2 Development con TypeScript y dice que necesito HTTP-server para ejecutar mis SAP'' . ¿Porqué es eso?

Pensé que Angular ejecuta en la máquina cliente. Entonces, ¿qué es exactamente la función del servidor? Si acabo de abrir el HTML , Angular no hace su magia.



Actualmente, Angular utiliza PathLocationStrategy de forma predeterminada, lo que requiere un servidor que PathLocationStrategy una redirección (ver, por ejemplo, el enrutador Angular 2.0 no funciona al recargar el navegador ). Por lo general, de todos modos, se carga una aplicación de navegador desde un servidor HTTP y, si configura Angular correctamente, debería hacerlo.

Durante el desarrollo, necesita un servidor porque los navegadores tienen algunas limitaciones de lo que permiten cuando carga desde archivos directamente.


De hecho, se supone que las aplicaciones de Angular se acceden mediante el protocolo HTTP, por lo que es una buena idea utilizar un servidor HTTP para el desarrollo. Estarás en las "mismas condiciones". Además esto evita tener algunas limitaciones y restricciones:

  • Enlaces absolutos relativos a un nombre de dominio . Quiero decir, si intenta hacer referencia a un recurso con una ruta absoluta desde la ruta raíz de su dominio. Es probable que esto no funcione con el protocolo de archivos, ya que su ruta raíz es la carpeta raíz de su sistema de archivos.
  • JavaScript y AJAX . JavaScript no funciona bien con el protocolo file:// y puede tener algunas restricciones de seguridad según los navegadores.

Vea estos enlaces para más detalles sobre estos temas:

Con respecto a la elección de un servidor web, los servidores web estáticos son suficientes para las aplicaciones Angular y hay varios servidores HTTP ligeros para este propósito:

Una característica interesante (con lite-server por ejemplo) consiste en la recarga en vivo. El servidor detecta cuando actualiza algunos contenidos (HTML, JavaScript, CSS) y vuelve a cargar automáticamente las páginas correspondientes en el navegador. Esto le permite ser más eficiente al implementar su aplicación.

Finalmente, si implementa los lados del cliente (Angular) y del servidor, estas partes deben ejecutarse en servidores diferentes (en el entorno de desarrollo podría ser diferente en otros entornos como la producción). Quiero decir:

  • Un servidor HTTP estático para el front-end que solo sirve los elementos para la aplicación Angular.
  • Un servidor HTTP dinámico para el back-end que proporciona el procesamiento del lado del servidor. Usted es libre de usar la tecnología que desea (Nodo, Java, ...)

Debido a estos dos servidores, debe habilitar CORS (Cross Origin Resource Sharing) para hacer posible que la aplicación Angular ejecute solicitudes AJAX en la aplicación del servidor. De hecho, no estás en el mismo dominio. Es algo que debe configurarse en el lado del servidor para devolver los encabezados CORS cuando el navegador envía un encabezado Origin en la solicitud. Para más detalles puedes echar un vistazo a estos enlaces:

Otra cosa a tener en cuenta si utiliza la función de enrutamiento de Angular es que el modo de historial de HTML5 simula algunas direcciones "reales" pero en este caso necesita alguna configuración en su servidor web para cargar el index.html (su archivo de punto de entrada) para cada URL correspondiente a cada ruta. Ver esta respuesta para obtener más detalles: Cuando actualizo mi sitio web obtengo un 404. Esto es con Angular2 y firebase .

El último punto a considerar es el empaquetado de su aplicación para su entorno de producción. Debe hacer que su aplicación sea eficiente (minimizando elementos, concilando archivos JavaScript, cargando plantillas, ...). En este nivel, no es necesario mantener dos servidores separados y la parte angular se puede empaquetar dentro de la aplicación del lado del servidor. En este caso, este último debe ser capaz de servir algunos archivos de estadísticas.

Espero te ayude, Thierry


Necesita un servidor lite para servir archivos estáticos.

El razonamiento detrás de esto es la seguridad.

Los navegadores no permiten solicitud directa en el sistema de archivos.


Si se parece a AngularJS 1.3, realiza solicitudes AJAX para obtener plantillas HTML, y para eso al menos necesitaría un servidor HTTP real.