¿Por qué uno usaría PHP en lugar de Node.js para un nuevo proyecto?

Todavía no soy un desarrollador de Node.js, pero respeto a las personas que lo son, y no tengo una agenda para hacer que alguien use un idioma u otro.

Creo que las personas que dicen que desarrollar código en Node.js tiene ventajas, pero desde la perspectiva de la gestión de la configuración, usar PHP en un proyecto de equipo es más fácil y productivo que Node.js en la actualidad.

También hay contratación. Si está preparando un nuevo proyecto, ¿qué tan fácil es encontrar desarrolladores calificados que conozcan Node.js, en comparación con aquellos que conocen PHP?

PHP es una tecnología madura, hay muchos más desarrolladores que pueden usarla, hay toneladas de recursos y toneladas de paquetes y extensiones de código existentes.

Se podría afirmar lo mismo sobre Javascript, pero no tanto sobre Node.js.

He estado involucrado recientemente con Node.js porque estoy ayudando a nuestro equipo de desarrolladores a crear una caja base Vagrant con herramientas de software instaladas. Todo fue bastante sencillo hasta que tuvimos que poner Node.js en la caja.

  • Las versiones de Node.js disponibles en el repositorio de epel RPM son 0.10.36 (que se lanzó el 2015-01-26). Un paquete de solo 12 meses de antigüedad es increíblemente actual para un repositorio de RPM, pero obviamente está desactualizado.
  • Cuando mi equipo de desarrolladores me pidió a mediados de diciembre de 2015 que instalara la “última” versión de Node.js, la última fue la 5.3.0. Solo han pasado ocho semanas desde entonces, y ya están a la altura de Node.js 5.6.0.
  • Así que descargué el código fuente para 5.3.0 y escribí scripts de aprovisionamiento para compilarlo durante el aprovisionamiento del cuadro base. Esto duplicó el tiempo total necesario para construir una caja base. Quizás necesito crear un servidor RPM local, pero parece mucho trabajo para un paquete.
  • Nodejs.org está periódicamente fuera de línea durante horas, lo que hace que sea muy inconveniente ejecutar compilaciones. Lección aprendida: descargue lo que necesita cuando pueda obtenerlo y guárdelo en su propio servidor de archivos.
  • Los repositorios de NPM también están fuera de línea periódicamente.
  • Varias herramientas de Node.js utilizadas por los desarrolladores requerían diferentes versiones conflictivas de algunos paquetes de NPM, y necesitaban que fueran globales. Esto crea un entorno de desarrollo dolorosamente complejo.

En general, esto no me da una buena primera impresión de Node.js como un proyecto maduro o estable. En este punto, sería reacio a recomendar Node.js en su forma actual para cualquier proyecto. Parece una pérdida de tiempo para mantener un entorno de desarrollo.

Mientras tanto, PHP se puede instalar simplemente con yum o apt-get. Auge. Hecho. Se puede instalar un entorno de desarrollo / prueba / producción para PHP de forma rápida y reproducible, basado en binarios oficiales y bien probados. Incluso PHP 7 es fácil de obtener como paquetes.

El ecosistema PHP es TAN grande, las aplicaciones en él son TAN numerosas, las bibliotecas que tiene están TAN proliferadas, el centro de datos, el host, la tecnología, el marco, …… .. + cualquier soporte que sea TAN grande que no disfrutar de esos beneficios sería una tontería. Y podría ser un juego de última hora, dependiendo de su proyecto, su futuro planificado o su futuro aún imprevisto.

Es un proyecto que se ejecutó de manera muy confiable a lo largo de los años y se mejoró constantemente con el tiempo. El código PHP que se escribió hace años se puede ejecutar junto con nuevas funciones PHP con modificaciones menores. Tanto que puede ejecutar código muy antiguo junto con la nueva construcción de lenguaje, patrones de diseño.

La fiabilidad es lo más importante en el desarrollo web. Debe estar seguro de que no tendrá que refactorizar grandes porciones de su sitio web / aplicación en solo 1-2 años en el futuro solo porque el proyecto de lenguaje que utilizó ha decidido desaprobar alguna característica e introducir algunos nuevos ‘cool’ y ‘ mejor ‘característica. El proyecto PHP se ha probado a ese respecto.

Luego hay cosas como el talento PHP masivo disponible en la industria, la facilidad de encontrar contratistas, autónomos, empleados, expertos, lo que necesites.

Cosas nuevas y geniales son cosas geniales. Pero para proyectos serios, uno tiene que ir con cosas geniales, probadas y confiables por mucho tiempo.

No es que PHP carezca de ninguna otra tecnología web en cualquier aspecto que importe.

Madurez del lenguaje. Sistemas existentes (es decir, que ya ejecutan la pila LAMP, que usan Zend, etc.). Documentación existente, tutoriales, ejemplos, productos confeccionados, marcos. Grupo de talento de desarrollo existente.

No es que sea un defensor de ninguna manera, para cualquier proyecto nuevo “rápido y sucio” en el que he tenido una opción, he usado node.js, a pesar de que mi servidor en vivo ya es LAMP. Cualquier argumento anterior de un cliente me envía por el camino de Php.

Si tuviera un proyecto de tamaño pequeño a moderado en el que trabajar y, lo que es más importante, si fuera el único que trabajara en él, de manera realista iría con PHP.

Haría mi propia biblioteca para no tener que seguir aguantando toda la mierda que PHP me arroja y todas las inconsistencias, etc., pero probablemente iría por PHP sobre nodo en ese caso.

No creo que se preste bien a la estructura, creo que gran parte de eso alienta la falta de estructura de una manera que Node no lo hace, pero es más fácil pensar en ello.

Si tengo que hacer el front-end y el back-end, dividirlos completamente de la manera en que normalmente funciona Node se vuelve muy agotador mentalmente. Creo que es una estructura mejor y más rápida, pero si lo estoy haciendo solo, hacer que algo funcione y tener la energía mental para luchar hasta la primera versión se convierte en la prioridad.

También cualquier cosa muy pequeña para la que usaría PHP. Como solo un envoltorio de fondo o algo así, iría con eso. Entra y sale.

Entonces, aunque prefiero Node, todavía hay casos de uso en los que iría con PHP.

Simple: Javascript es un lenguaje horrible.


Para empezar, Javascript no es OOP, puede “emular” algunas tareas de OOP pero no es lo mismo (las clases son funciones que también podrían actuar como variables globales). Por ejemplo


var manzana = {
tipo: “macintosh”,
color rojo”,
getInfo: function () {
devuelve this.color + ” + this.type + ‘apple’;
}
}

Es una especie de clase con mucha sorpresa. Puede usar dentro de la clase la variable “this”, sin embargo, si está usando un objeto dentro de la clase, “this” se refiere al objeto dentro de la clase.

En segundo lugar, el alcance de Javascript es una bolsa de sorpresa.

Tercero, algunas operaciones están llenas de sorpresa. Incluso el operador binario es igual a no tan obvio.

Acerca de Node.JS, toma la fealdad de Javascript y agrega un nuevo nivel de complejidad: llamadas asíncronas para casi todo.

Además, uno de los problemas de Node.JS es la falta de todo. El mantra dice que puedes crear un servidor con Node en unas pocas líneas. Es cierto, pero el servidor es realmente limitado (¡una sola página y nada más!). Entonces, para crear un servidor adecuado, debe hacerlo todo en el proyecto (cookies, sesión, redirección …)

  • Porque ya puedes codificar muy bien en PHP;
  • Porque no eres tan bueno en Javascript;
  • Porque estás muy familiarizado con LAMP;
  • Porque no estás tan familiarizado con la pila MEAN;
  • Debido a que ya hay una base de código en PHP desde la cual el proyecto puede iniciarse (no sirve reinventar la rueda);
  • Porque te diste cuenta de que usarías Node.js solo porque todos dicen lo genial que es, todos lo hacen, es el futuro de la web y esa mierda, pero … quizás, en el próximo proyecto, necesito que esta mierda la haga viernes !

Voy a dar una respuesta ligeramente diferente.

No se concentre en los idiomas, concéntrese en la herramienta adecuada para el trabajo y el conocimiento de la persona que implementa las cosas.

Algunos lenguajes son más adecuados para ciertas cosas, Node.js es más adecuado para API que sitios web, PHP es más adecuado en una papelera.

Mire el problema en cuestión y descubra cuál es la mejor solución, y no al revés.

Yo diría que esta pregunta es un poco como: ¿por qué alguien tejería una bicicleta si la motocicleta ya existe? ¿O por qué alguien fabricaría un automóvil de consumo de combustible si los automóviles eléctricos ya están inventados?

Cada producto e invención tiene sus propios pros y contras. Node.js puede ser adecuado para algo mejor, mientras que PHP para otra cosa.

Otras respuestas muestran algunos pros y contras relevantes en ambos idiomas, pero me gustaría agregar que en realidad no es obvio que Node.js sea técnicamente mejor que PHP. Recuerdo los puntos de referencia que favorecen PHP en algunas unidades de medida, incluso cuando la mayoría de ellos están favoreciendo Node.js.

Todavía soy un desarrollador junior, pero para mí está claro que node.js sería excesivo para, digamos, un blog. La mayoría de los servidores a partir de hoy no vienen con node.js instalado, mientras que php está en todas partes. Entonces, si tiene un proyecto simple con un esquema de base de datos simple, podría ir a php, en lugar de revisar todo el trabajo para configurar node.js.

Debido a que PHP es su experiencia, necesita completar el proyecto dentro de los plazos, y no tiene tiempo para experimentar con algo en lo que es nuevo.