Angular JS y el futuro del la web (software)

Iniciado por [u]nsigned, 9 Junio 2015, 06:19 AM

0 Miembros y 1 Visitante están viendo este tema.

[u]nsigned

Hola!! Si estas leyendo esto, doy por hecho que eres desarrollador/programador/diseñador web, que manejas a nivel Ssr algun back-end (por ejemplo php, asp, python o java) y también algo de front-end (jQuery, BootStrap, etc).

Yo hasta hace un mes era un 'evangelizador' de PHP. Por ser Open Source, por ser fácil tanto para expertos como para novatos, por ser portable, por su amplia documentación y cuota de mercado, entre otras tantas cosas, adopte este lenguaje, y cuando descubrí frameworks como CodeIgniter o Laravel me enamore de el. Por algo es el lenguaje mas usado, la mayoría de las webs están programadas en PHP, y la mayoría de los servicios de hosting ofrecen PHP.

Pero hace un mes, aproximadamente, se me dio por indagar sobre AngularJS, un framework MVW javascript para el front-end, promovido por el mismo Google. Yo era de los tantos que usaban JS solo para cosas puntuales con jQuery o BootStrap, pero al ver las maravillas y potencial de AngularJS mi cosmovisión sobre javascript cambio rotundamente.

Y esto no es todo, al investigar sobre Angular inevitablemente me tope con NodeJS, javascript del dalo del servidor!!!. Por primera vez, javascript, estaba en condiciones de albergar una aplicacion/service web completa (cliente-servidor). Y no solo esto, sino que el mismo lenguaje (con su capacidad de pasar funciones por todos lados) y herramientas como Protrator me hacen creer que estamos entrando en la web 3.0, y el futuro es de javascript por su potencial semántico, al tener, en mi humilde opinión, una naturaleza mas cercana al razonamiento humano.

Me gustaría saber si alguien ahí, que me este leyendo ahora, ha incursionado en tecnologias JS tanto front-end como back-end. Y si piensan que son el futuro. Algunos diran que el futuro es java y los moviles. Pero la verdad es que si logramos crear un estándar con html5, css3 y js no hay necesidad para aplicaciones 'nativas', asi que un software responsive basado en web seria superior a uno nativo escrito en java.

Saludos y gracias por leer!
PD: Este texto fue algo exponteno de 3 minutos al teclado, esta sujeto a errores de ortografía y redaccion, que talvez corrija xD

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

engel lex

Es genial siempre que uno se da con esas tecnologías y dice "wow, como pude ser tan ciego toda mi vida" jejeje

que tal el rendimiento de AngularJS sobre navegador? me refiero, es jscript consume recursos y procesador, la pregunta es, el consumo es execesivo? un dispositivo de baja potencia puede correrlo?

sobre NodeJS tengo buenas referencias, incluso si instalas el node en el sistema (no es como si en contra parte no instalaras el .net Framework) puedes hacer aplicaciones de escritorio y linea de comandos para linux y windows (no he probado mac) muy buenas y eficientes, sobre usarlo a nivel de servidor, se que tambien presta funciones muy interesantes en respecto a php
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

[u]nsigned

Cita de: engel lex en  9 Junio 2015, 06:25 AM
Es genial siempre que uno se da con esas tecnologías y dice "wow, como pude ser tan ciego toda mi vida" jejeje

Eso mismo pense yo!

Cita de: engel lex en  9 Junio 2015, 06:25 AM
que tal el rendimiento de AngularJS sobre navegador? me refiero, es jscript consume recursos y procesador, la pregunta es, el consumo es execesivo? un dispositivo de baja potencia puede correrlo?

Yo lo uso en mi trabajo, desarrollo sistemas CRUD para intranets, en plataforma web. Todo lo que esta en produccion, aun esta tiene php(codeigniter) en el back-end, pero estoy testeando con AngularJS consumiendo solo servicios RESTful del backend(codeigniter). Y la verdad que vuela, y node ni hablar. He hecho pruebas comparando las mismas instrucciones de nucleos y numeros al azar tanto en php como en node, y node es unas 10 veces mas rapido, y su filofia de ser orientado a eventos evita colapsos en el server.

Con respecto a angular, el consumo es minimo, incluso equipos con single core y 1gb ddr lo corren sin problemas. Tambien en una tablet china android corre sin problemas. Y lo he testeado con grids de 150 registros de 12 elementos por 'vista'.

Cita de: engel lex en  9 Junio 2015, 06:25 AM
sobre NodeJS tengo buenas referencias, incluso si instalas el node en el sistema (no es como si en contra parte no instalaras el .net Framework) puedes hacer aplicaciones de escritorio y linea de comandos para linux y windows (no he probado mac) muy buenas y eficientes, sobre usarlo a nivel de servidor, se que tambien presta funciones muy interesantes en respecto a php

Node es totalmente superior a Apache&PHP, 10 veces mas rapido y eficiente. Al montar el server desde 0 con npm no se crean cosas innecesarias 'por defecto' como en Apache & PHP, sino que tanto el server como el procesamiento de eventos y datos hace solo lo que le indicamos. Por ejemplo con el pc P$ que mencione antes, como servidor de pruebas, node ejecutaba 100.000.0000 de bucles en apenas 2 segundos. Y la razon de todo esto esta en V8, la maquina vistual de Google para JS.

Y para que te des una idea, el servicio de chat de Facebook fue migrado de PHP compilado con HipHop a nodejs.

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

moikano→@

#3
Yo siempre he estado peleado con js porque me ha pareceido siempre muy lioso comparado con el POO, eso de usar Prototipados y demás, no lo acababa de entender. A dia de hoy no creo que conozca ni el 50% de lo que puede hacer javascript, pero he tenido que ir aprendiendo.

Sobre angularjs,nodejs y mongodb ya he oido hablar muchas veces. Pero lo único que he probado es mongodb, y se que funciona mucho mas rápido que mysql, por ejemplo.

En un proyecto mio si que realice un cliente js, muy básico, para hacer llamadas a un webservice de php con nginx que ofrecia jsons al cliente javascript, y la verdad es que mejora muchísimo la velocidad y la carga, tanto de la parte del servidor como la del cliente.

Esto es como todo, en la informática sacan algo nuevo y bueno, lo llenan de cosas innecesarias y entonces se vuelve pesado y "desactualizado", y entonces acan algo nuevo y distinto, sin casi nada de carga porque es muy básico, apenas tiene configuraciones porque van casi vacios, pero que al final si vas ha hacer algo extra te pillas los dedos porque o es muy complicado o no se puede hacer.

Así que todo esto lo veo como siempre, si, es el futuro angularjs, nodejs y mongodb, pero un futuro que aún está por llegar, en algunos casos.

Un ejemplo es nginx, que para mi va mucho mejor que apache2, en cuanto a rapidez, pero ponte a configurar un auth digest con nginx, sencillamente, no puedes.

Y por suesto el futuro está en los terminales tontos que cargar software en servidores mas potentes sin necesidad de instalar nada en los terminales. Es decir, el modelo web, pero será otro modelo, no será el actual. Al menos eso es lo que opino.

Usuario Invitado

Yo soy programador Java EE y algo de PHP. Hace algún tiempo empecé a aprender NodeJS y AngularJS y la verdad, me he quedado enganchado.

Desde mi perspectiva como programador Java EE, NodeJS es demasiado sencillo. Routes, middlewares, etc, te facilitan mucho el desarrollo de aplicaciones web modernas. AngularJS por otro lado, es EL framework front end, no existe framework alguno que se le pueda comparar. El binding bidireccional, soporte para templates, estructuras de control dentro del html, hacen que mires con otros ojos el desarrollo web.

Utilizar NodeJS y AngularJS conjuntamente es genial. La interoperabilidad de ambos, al ser todo código javascript es insuperable. Ésto, combinado con HTML5, drag and drop, localstorage, webworkers, etc, te permiten realizar una verdadera aplicación web moderna. Todo trabaja conjuntamente sin entorpecerse.

AngularJS también lo puedo utilizar con Java EE, por ejemplo, para consumir RESTfuls, para usarlo con Spring MVC, etc.

Es obvio que como todo tiene sus contras, por ejemplo, es mucho más facil debuguear en Java y PHP. No existen muchos IDEs que den soporte al MEAN stack. Pero la comunidad NodeJS/AngularJS es vibrante, con muchas ideas nuevas por mejorar el ecosistema, eso por sí solo, te da la seguridad que ambas tecnologías seguirán por mucho tiempo más.

Respecto a IDEs, les recomiendo WebStorm de Jetbrains. Es un IDE muy bueno con soporte para NodeJS y AngularJS. Autocompletado muy bueno, entre otras características.

PHP, me parece un lenguaje feo. Su diseño interno deja mucho que desear, inconsistencias varias, en funciones, en convención de nombres, etc. Los frameworks como Symfony, Laravel o Zend, verdaderamente han salvado al lenguaje.


Saludos.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

MinusFour

Ciertamente el modelo de nodejs es más eficiente en cuanto a concurrencia pero ya hay varias formas de tener mejor concurrencia con PHP + Servidor Web (y lo digo porque esta de moda dejar al lenguaje implementar el servidor HTTP en lugar de usar un tercero). Pero si vamos a criticar el lenguaje... PHP  tiene un buen modelo de OOP y hay varios cambios que estan por venir en PHP 7 que los veo muy bien. Encima el lenguaje tiene una de las mejores comunidades y está en constante desarrollo.

Por otro lado, tambien he tocado NodeJS y javascript en general. Lo que realmente me ha gustado bastante es que node viene con su gestor de dependencias por default, npm. PHP tambien tiene su gestor, Composer... pero en cierta forma prefiero la forma en la que npm trabaja. Puedes tener incluso dependencias instaladas de forma global, cosa que en composer todavía no he visto. Encima composer no viene por defecto con PHP, lo tienes que instalar por tu cuenta (cosa que no te tarda mucho, pero bueno...). Siento que NPM esta mucho mejor integrado que Composer. Y cuando estás trabajando con varias dependencias... te das cuenta de lo importante de tener un gestor apropiado. Composer no está nada mal, pero a mi parecer NPM es mejor.

Ahora en cuanto el lenguaje de javascript... Las coas se pueden poner muy peliagudas en javascript. Les dejo unos videos:

El primero empieza en 1:22

[youtube=640,360]https://www.youtube.com/watch?v=FqhZZNUyVFM&t=1m22s[/youtube]

Este es entero, acerca de la magia de JS.

[youtube=640,360]https://www.youtube.com/watch?v=et8xNAc2ic8[/youtube]

Sin mas que decir, puedo hacer las cosas sumamente difícil de comprender en javascript y es código que algunos dirán "uh, eso es imposible"... pero lo es y al menos en eso es bastante consistente. Lo peor del caso, es que el lenguaje se presta bastante a hacer las cosas bastante difíciles y un montón de personas se sientan a escribir código en javascript que depurar te cuesta bastante. Es sumamente sencillo esconder la intención detrás del código. En unas cuantas lineas, puedes alterar el programa de manera impresionante.

Me gustan los dos, porque los uso bastante. Tengo cierta preferencia a PHP simplemente porque estoy algo acostumbrado al flujo de PHP y su modelo OOP, pero también tengo mis proyectos en Node.

[u]nsigned

@MinusFour: Bueno, yo tambien soy desarrollador de PHP. Nadie te obliga a usar MEAN (MongoExpress+AngulaJS+NodeJS), tranqulamente peude usar LAMP en el backend (asi hago yo de momento hasta que domine al 100% Mongo y node). Si solo haces peticiones RESTfull y dejas toda la logica y modelo de negocios en el front-end se consiguen sistemas muy robustos, seguros y veloces.

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

MinusFour

[quote author=nsigned link=topic=436711.msg2020770#msg2020770 date=1434038548]
@MinusFour: Bueno, yo tambien soy desarrollador de PHP. Nadie te obliga a usar MEAN (MongoExpress+AngulaJS+NodeJS), tranqulamente peude usar LAMP en el backend (asi hago yo de momento hasta que domine al 100% Mongo y node). Si solo haces peticiones RESTfull y dejas toda la logica y modelo de negocios en el front-end se consiguen sistemas muy robustos, seguros y veloces.
[/quote]

Tambien creas una pesadilla de mantenimiento. Tienes que manejar 2 sistemas independientes practicamente y en el momento en que haces un cruce con ellos... Empieza el juego de: "Donde quedo la bolita". Si vas a mezclar stacks, tienes que tener una muy buena razón para hacerlo y estar consciente del grado de complejidad que introduces (4 nuevas tecnologías).

#!drvy

Pongo en duda eso de que Node sea eficiente. Puede que sea rápido, si, pero eficiente en cuanto a uso de CPU y RAM es dudoso. Recordemos que viene del V8 de Chrome, y es bastante conocido por tragar RAM como agua. En su día me hice un bot IRC sobre Node y otro sobre PHP, el de node superaba tranquilamente el 1MB mientras que PHP consumía 0.5 o así.

A nivel web, aquí hay un benchmarking contra Apache... y si se cambia Apache por Nginx y php-fpm probablemente se consigan resultados aun mejores.

http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php

Vamos que puede ser muy rápido, pero consume muchos mas recursos a cambio y eso no lo veo realmente como 'eficiente'. Sobretodo a largas escalas.

Saludos