¿Necesito node.js para usar Angularjs?

79

Me gustaría usar angular.jspara mi herramienta de edición de imágenes en mi sitio web. ¿Necesito yo node.jstambién?

No entiendo el escenario. Si no lo necesito, ¿cuándo usamos tanto nodejs como angularjs juntos?

Manikandan Arunachalam
fuente
Cosas diferentes. (lo único común es JavaScript)
Sergiu Paraschiv
Uno es cliente y otro es servidor. JavaScript en el cliente no depende del mismo idioma en el servidor. ¿Cuál es la confusión aquí?
Neil Lunn
1
En términos simples, la respuesta es no
Raunak Kathuria
1
después llegué a saber qué es angular y nodo js esta pregunta me parece una tontería .. :-P
Manikandan Arunachalam
6
Creo que el tutorial en el sitio web oficial de Angular confunde a todos. Utiliza NodeJS como servidor backend. De hecho, a menos que esté usando AJAX o algo por el estilo, puede ejecutar Angular únicamente en su computadora sin problemas.
Aaron Liu

Respuestas:

65

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.

Catalin MUNTEANU
fuente
1
Gracias @Catalin Munteanu. Ahora entiendo lo que significa.
Manikandan Arunachalam
2
Además, cuando necesite un servidor, le recomiendo que cree uno desde cero. Debe comprender cómo funciona antes de usar un marco complejo como MEANo SailsJS.
Catalin MUNTEANU
1
, estoy manejando la imagen en el servidor por php
Manikandan Arunachalam
¿Qué pasa si tengo una aplicación de backend en funcionamiento y todo lo que quiero construir es solo el front end? ¿Angular solo es lo suficientemente bueno?
Arun
@Arun, no necesita NodeJS si desea construir la interfaz con AngularJS.
Catalin MUNTEANU
80

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 para algo que es esencialmente una tecnología del lado del cliente . Por lo que entiendo:

  1. node.jssolo se usa para administrar las dependencias de una aplicación angular 2. Si de alguna manera puede lograr obtener esas dependencias sin usarnode.js , npmo jspmse puede ejecutar y desarrollar su aplicación sin conexión. Sin embargo, hacerlo manualmente tomará 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.jso npmo jspmpara el caso automatiza este proceso, así como tomar todas las medidas necesarias para configurar los archivos ( jspm) de modo que cada vez que utilice una dependencia particular de su aplicación, que otra dependencia especial de la dependencia también estará presente en el sistema.
  2. 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 con 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.
  3. node.jstambién es necesario para la hot-module-reloadcapacidad de desarrollo rápido de aplicaciones, ya que proporciona una función file watcher apipara detectar cambios en el código fuente.

Pero hay una manera de desarrollar la aplicación Angular 2 sin conexión sin node.js.

  1. ¿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.
  2. 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 las 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.
  3. Para la hot-module-reloadcapacidad, 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 puede fetcho los xmlhttprequestrecursos que necesita la aplicación, puede periódicamente fetcho xmlhttprequestlos recursos que su aplicación necesita y compararlos con algún caché. Pero, ¿cómo saber qué archivos comprobar? Puedes buscar linksdentro de la página,script , deimg.Si usa SystemJS como cargador de módulos, entonces puede usar su registro para buscar los archivos que necesita su aplicación pero no cargados en la página, ya que se ha transpilado o algo así. Si bien hacer todo esto puede suponer una pérdida de rendimiento para su sistema junto con la sobrecarga adicional de transpilar o preprocesar código no nativo, este trabajo puede subcontratarse a uno web workerque 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.

  1. 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í lo 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.
  2. 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.
  3. La extensión también implementa una hot-module-reloadfuncionalidad al conectarse a las primitivas hmr desarrolladas por alexis vincent para SystemJS. La hot-module-reloadfuncionalidad 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.

  1. Si está usando 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 este tipo de paquetes se mantienen manualmente.
  2. 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.
  3. La hot-module-reloadcapacidad 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).
Windinger
fuente
7
Esta debería ser la respuesta aceptada. Acabo de tener esta pregunta y despejaste confusiones que ni siquiera tenía. Bravo ...
Gaurav Chauhan
No estoy de acuerdo, nodejs no es la única tecnología del lado del servidor. Creo que la pregunta es mucho más sobre el uso de grunt, yeoman, etc.que necesitan instalar nodejs.
Jérôme B
9

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.

hasanain
fuente
2
Esta respuesta es lo que encuentro confuso sobre Angular y NodeJS: en el CLIENTE, hay tantas herramientas que requieren NodeJS, básicamente cualquier cosa que se instale usando la utilidad del administrador de paquetes de nodos (npm). Lo que todavía no entiendo es cuando llega el momento de HOSTAR el sitio que usó NodeJS y los paquetes instalados por npm en el cliente: ¿también necesita tener NodeJS en el servidor para que funcionen esos paquetes instalados? Si la respuesta es "tal vez", ¿qué factores intervienen para saber si NodeJS también debe estar en el servidor web?
Jazimov
1
Para responder a su pregunta, sí y no. npmes un administrador de paquetes. Instalar un paquete con npmes lo mismo que copiar el paquete y sus dependencias en su directorio local. Entonces, si desea las características agradables que vienen con npm, debe instalar npmy necesita nodo para hacer eso. Si no necesita las funciones de npm , no tiene que instalarlo y puede copiar los paquetes usted mismo. Digamos que su sitio necesita usar este selector de fecha si ejecuta un comentario de instalación que lo copiará y angularjs hacia abajo o puede hacerlo manualmente.
hasanain
Gracias, es posible que publique una nueva pregunta para continuar. Pero entendí tu ejemplo. Soy un programador de .NET y alojaría en un servidor de Windows que ejecuta IIS. La mayoría de las empresas de alojamiento no parecen admitir NodeJS en el servidor; por otra parte, la mayor parte de lo que estoy haciendo en el cliente con Node es usar su utilidad npm (administrador de paquetes) para "instalar" complementos / dependencias. Después de eso, espero poder copiar los archivos configurados en el servidor web y funcionarán bien sin el nodo. No veo por qué querría un nodo en el servidor a menos que tuviera acceso a la consola de todos modos y pudiera ejecutar npm en él según sea necesario
Jazimov
8

No. Angularse utiliza en el lado del cliente y Nodeen el lado del servidor.

Suelen ir juntos como MEAN Stack, pero no es necesario.

pozo
fuente
3

No necesita Node.JS para que AngularJS funcione. NodeJS es del lado del servidor, AngularJS es del lado del cliente.

Si eres nuevo en AngularJS, te sugiero este tutorial Tutorial de AngularJS . En el tutorial usará NodeJS, comprenderá por qué los dos funcionan juntos, pero no son necesarios.

Porra
fuente
3

Es difícil responder sin saber cómo funciona su herramienta de edición de imágenes. Pero para responder a su pregunta, no, no necesita Node.js para usar AngularJS.

Angular es un marco javascript de front-end que opera en el navegador web del cliente.

Node es un servicio que puede ejecutar javascript y se usa a menudo en un servidor tal vez en reemplazo de PHP ( como en la pila MEAN ). Además, debido a que Node es un servicio que puede ejecutar javascript, se puede usar en su computadora local al desarrollar aplicaciones angulares para realizar tareas en segundo plano como minificar css y javascript y realizar pruebas.

Entonces, si su herramienta de edición de imágenes está desarrollada en javascript y su aplicación usó Angular y Node (como servidor web), el código podría ejecutarse en el lado del cliente o en el lado del servidor.

Lea la pila MEAN para ver dónde encajan Node y Angular. Ni siquiera necesita Node, pero es bueno desarrollar todo en el mismo lenguaje.

JayMc
fuente
Ahora acabo de decidir que puedo usar angularjs para manejar, un usuario puede cargar una imagen y usar opciones como (rotar, recortar) .Necesito administrar estas imágenes. Eso es todo en las funciones de mi herramienta de edición de imágenes.
Manikandan Arunachalam
1
Para la manipulación de la imagen del usuario, como rotar y recortar, tiene sentido tener esa funcionalidad en la interfaz. Para una funcionalidad de rutina como el cambio de tamaño de la imagen, puede colocarla en un servidor de nodo para liberar recursos del cliente. En estos días, el hardware del lado del cliente es bastante poderoso, probablemente no sea necesario.
JayMc
0

Razón para instalar NodeJs Como un navegador web como Chrome, Firefox, etc., solo entiende JavaScript, tenemos que transpilar nuestro Typecript a JavaScript. Por lo tanto, el transpilador de TypeScript requiere Node.js para generar el código de Typecript en JavaScript.

deepika yadav
fuente