Solución:
Siento tu dolor.
Para alguien nuevo en el desarrollo de Angular 2, puedo sentir el dolor de tener que aprender tecnologías del lado del servidor por algo que es esencialmente un tecnología del lado del cliente. Por lo que entiendo:
-
node.js
solo se usa para administrar las dependencias de una aplicación angular 2. Si de alguna manera puede lograr obtener esas dependencias sin usarnode.js
,npm
ojspm
luego puede ejecutar y desarrollar su aplicación sin conexión. Sin embargo, hacerlo manualmente llevará una cantidad inexorable de tiempo, ya que debe descargar archivos manualmente, lo que puede tener otras dependencias que requerirán que se descarguen otros archivos nuevamente (sí, he estado allí).node.js
onpm
ojspm
para el caso automatiza este proceso, además de tomar todos los pasos necesarios para configurar los archivos (jspm
) de modo que siempre que use una dependencia particular en su aplicación, la otra dependencia de esa dependencia particular también estará presente en su sistema. - Algunos navegadores, en particular Google Chrome, restringen los archivos cargados localmente por motivos de seguridad, de modo que ciertas tecnologías HTML 5 utilizadas por Angular 2 producirán un error cuando se carguen utilizando el protocolo file :. Por lo tanto, necesita un servidor desde el que pueda servir su aplicación para que todas las tecnologías HTML 5 disponibles estén disponibles para que Angular 2 se ejecute.
-
node.js
también es necesario para elhot-module-reload
capacidad para el desarrollo rápido de aplicaciones, ya que proporciona unafile watcher api
para detectar cambios en el código fuente.
Pero hay una manera de desarrollar la aplicación Angular 2 sin conexión sin node.js.
- ¿Recuerdas cuando dije que si puedes conseguir todas las dependencias necesarias, puedes ejecutar y desarrollar tu aplicación sin conexión? Si de alguna manera puede encontrar o crear un paquete que tenga todas las dependencias requeridas que necesitará su aplicación, entonces no necesita npm o jspm para administrar las dependencias por usted.
- Para el
file-access-restriction
problema, puede cargar su proyecto como una extensión. Las extensiones tienen la capacidad de utilizar todas las tecnologías HTML 5 disponibles, así como algunas api potentes (no disponibles incluso para aplicaciones servidas en un servidor), mientras que al mismo tiempo son locales para su entorno de desarrollo. Por lo tanto, no necesita activar un servidor web para acceder a las tecnologías HTML 5 si sirve su aplicación como una extensión. - Para el
hot-module-reload
capacidad, puede abordarla desde el otro lado. En lugar de tener un observador de archivos en el servidor web para monitorear los cambios en los archivos en el sistema local, puede hacerlo desde la propia aplicación. Dado que la aplicación puedefetch
oxmlhttprequest
recursos que necesita la aplicación, puede periódicamentefetch
oxmlhttprequest
los recursos que su aplicación necesita y compárelos con algún caché. Pero, ¿cómo sabe qué archivos comprobar? Puedes buscarlinks
dentro de la página,script
, deimg.
Si usa SystemJS como cargador de módulos, puede usar su registro para buscar los archivos que necesita su aplicación pero que no están cargados en la página, ya que se ha transpilado o algo así. Si bien hacer todo esto puede ser una pérdida de rendimiento para su sistema junto con la sobrecarga adicional de transpilar o preprocesar código no nativo, este trabajo se puede subcontratar a unweb worker
que liberará el hilo de ejecución principal en el sistema para el código de su aplicación.
¿No me crees? Aquí tienes una prueba.
- El proyecto Angular in Chrome en github contiene un paquete comprimido que contiene las dependencias necesarias para desarrollar una aplicación mínima de Angular 2 (por mínimo, me refiero al tutorial Tour of Heroes referido en la página de inicio rápido). De modo que si está en un sistema que no es compatible con node.js (sí, los hay, ChromeOS por ejemplo) o simplemente en un sistema restringido en el que node.js simplemente no está disponible, todas las dependencias requeridas están disponibles y usted no necesita npm o jspm para administrar las dependencias requeridas por usted.
- Hay una extensión de prueba de concepto que sirve para el tutorial Tour of Heroes (los archivos de desarrollo, mecanografiado y todo) localmente como una extensión de Chrome.
- La extensión también implementa un
hot-module-reload
funcionalidad al conectarse a las primitivas hmr desarrolladas por alexis vincent para SystemJS. loshot-module-reload
La funcionalidad está habilitada por un solo archivo javascript de modo que si esta funcionalidad no es necesaria o está consumiendo demasiados recursos, entonces puede simplemente eliminar la línea de código ofensiva.
Pero ten cuidado.
- Si está utilizando este sistema, entonces necesita una forma de actualizar su paquete de desarrollo a medida que la tecnología avanza y avanza a un ritmo rápido (qué con hablar de Angular 3 cuando Angular 2 acaba de ser lanzado) o las tecnologías que está utilizando. desarrollar su aplicación puede volverse obsoleto o que en algún momento un cambio de api puede evitar que su aplicación sea funcional en el futuro. Tampoco se garantiza que tenga repositorios actualizados para las dependencias, ya que estos tipos de paquetes se mantienen manualmente.
- Agrupar su aplicación como una extensión de Chrome como en Angular en Chrome introducirá cuellos de botella en el rendimiento. Dado que el código se transpila y los módulos se cargan de forma diferida, pierde los avances de la compilación JIT y otras mejoras de rendimiento que utilizan los motores JavaScript modernos para optimizar la ejecución del código en el navegador. Sin embargo, lo que pierde en rendimiento, obtiene la flexibilidad para utilizar la tecnología en la que prefiere desarrollarse. Siempre hay una compensación. Además, el impacto en el rendimiento es solo al principio cuando se carga el código. Una vez que la aplicación lo haya cargado, el sistema sabrá cómo implementar las mejoras de rendimiento. Cuando distribuye su aplicación, realmente necesita compilar los recursos necesarios para aprovechar las mejoras de rendimiento de los motores JavaScript modernos.
- los
hot-module-reload
La capacidad es actualmente una forma pirata de implementar un observador de archivos que usa convenciones comunes para un proyecto (temp1.ts, temp1.css, temp1.htm) ya que no hay forma (podría estar equivocado en esto) de obtener una lista definitiva de todos los recursos que necesita la aplicación pero no cargados en la página principal (los recursos transpilados o preprocesados).
No necesita NodeJS para crear una herramienta de edición de imágenes del lado del cliente.
AngularJS es un marco de aplicación web, mantenido por Google y la comunidad, que ayuda a crear aplicaciones de una sola página, que consisten en una página HTML con CSS y JavaScript en el lado del cliente.
Pero si algún día desea cargar y almacenar esas imágenes en un servidor y hacerlas accesibles para varios clientes, entonces sí, también necesitará un servidor. Este servidor se podría hacer con NodeJS.
node.js se usa para escribir Javascript en el lado del servidor. angular.js es un marco del lado del cliente.
No necesita node.js para usar angular.js, pero puede instalar npm (administrador de paquetes de nodos) para usar algunas herramientas increíbles que harán su vida como desarrollador angular mucho más fácil. Por ejemplo: yoeman, que es una gran herramienta para andamios. Hay muchas otras herramientas disponibles en npm aquí hay un enlace a su sitio. Obtenga más información sobre angular en el sitio web oficial de angular o en el canal angular de youtube.