6

Estoy buscando reemplazar PHP con algo mejor (todo el mundo parece decir que PHP es malo, ¿verdad?), Y considerando el lado del servidor JavaScript.marco javascript del lado del servidor

node.js parece muy popular, pero me temo que me volveré loco con cosas asíncronas. ¿Es posible escribir código normal (sincrónico) debajo del nodo?

Mi lista de favoritos: scripts web y de línea de comandos, buen rendimiento (en el The Computer Language
Benchmarks Game
, V8 parece ser un orden de magnitud más rápido que PHP), preferiblemente desarrollado por alguna empresa o comunidad para que no sea abandonado algún día , comunidad de usuarios con una biblioteca de módulos decente.

No considero varios frameworks basados ​​en Rhino, como Rhino se ejecuta en Java, y no estoy en Java, consciente de su huella de memoria, y la idea de compilar JavaScript para Java no tiene sentido para mí.

Pasé algún tiempo buscando en Google y encontré numerosos proyectos: Myna, Meteor, GromJS, APE, GLUEscript, v8cgi, silkjs, wakanda, GPSEE, sorrowjs, ejscript, Persevere, PhantomJS.

¿Alguien tiene alguna experiencia con eso? Cualquier recomendación es bienvenida.

+1

Si usted no está listo para el modelo asíncrono a continuación, tienes razón: Node.js te volverá loco. – Pointy

+0

@ Sandman4 ... Puedo sentirte en esta pregunta ... En el pasado busqué cosas nuevas y elegantes para mis simples implementaciones, pero ya no lo hago, a menos que sirva para un propósito comercial. El desafío con implementaciones sofisticadas es el mantenimiento a largo plazo. Si su organización tiene suficientes habilidades de PHP, hágalo en PHP ... O simple .NET (soy consciente de que .NET no es simple: D) .. O use Node si su organización se moverá a lo largo de ese camino para desarrollar competencias. – Hasith

+0

Rhino no se compila en Java, se compila en bytecode. –

Respuesta

5

Well Node.JS es el camino a seguir si me preguntas. Puede escribir código síncrono, PERO solo lo hace en scripts de línea de comando. Al escribir un servidor web, debe ir a la ruta asíncrona, de lo contrario no funcionará porque JavaScript tiene un solo hilo y todo se detiene.

La razón por la que Node.js es tan rápido se debe a la IO asíncrona.

Te acostumbrarás a las devoluciones de llamada y eventos y después de un tiempo ya no quieres volver.

Node.js es una plataforma desarrollada en el tiempo de ejecución de JavaScript de Chrome para crear fácilmente aplicaciones de red escalables y rápidas para . Node.js usa un modelo de E/S no bloqueante controlado por eventos que lo hace liviano y eficiente, perfecto para aplicaciones de datos en tiempo real que ejecutan en dispositivos distribuidos.

+2

No creo que _JavaScript_ tenga un solo subproceso, es una _aplicación_ que tiene un solo subproceso. Solo que no sé si es una limitación de node.js o del propio V8. – Sandman4

+0

Javascript es inherentemente paralelo porque usa llamadas asincrónicas. El problema es que se ejecuta en un intérprete que generalmente tiene un solo subproceso. –

+0

JavaScript está destinado a ser utilizado como se usa comúnmente (sorpresa sorpresa). Tiene el hilo principal que ejecuta el JavaScript interpretado que funciona en un entorno sin bloqueo y varios trabajadores que trabajan en hilos separados (en un entorno IO de bloqueo). Se puede ver claramente en Node.js (módulos de JavaScript y C++), pero también se realiza en todos los navegadores (principales) (Node.js usa el motor V8 después de todo). Con eso en mente, depende de usted si lo llama un solo subproceso o multihebra. – Pijusn

4

¿Has mirado Comparison of server side JavaScript solutions?

Node.js es popular. En cuanto a la velocidad de php, ¿has mirado HipHop? Volver a escribir su código en JavaScript probablemente no dará mucho de un aumento de rendimiento sobre php.

+0

Pasé todo un día buscando en Google así que sí, vi la wikipedia. Mi idea no es solo un rendimiento (aunque el punto de referencia en el juego de referencia parece impresionante), solo quiero probar algo más que PHP, tal vez algo más "ordenado". – Sandman4

4

Nodejs es una opción muy buena en muchos frentes.

Pero dices que te preocupa que sea una naturaleza asincrónica.

Dos puntos en esto.

  1. nunca tiene que preocuparse por async y puede continuar escribiéndole la aplicación desde arriba como PHP. Eso es si no estás realizando "bloqueando IO".

  2. Si está realizando un "bloqueo de E/S", como leer una base de datos o acceder al sistema de archivos, necesitará lidiar con la asincronía.Afortunadamente, hay buenas maneras de hacerlo sin la necesidad de cambiar demasiado las prácticas de codificación.

3

Gracias por proporcionarnos la lista de "numerosos proyectos" que ha encontrado. Actualmente estamos utilizando Microsoft ASP 3.0 ("ASP clásico", que viene con IIS) que proporciona una implementación de JavaScript del lado del servidor desde 1996: es rápido, maduro y gracias a la tecnología COM bastante extensible. Si no está fijado a código abierto, vale la pena echarle un vistazo. Para nuestra estrategia de código abierto, veremos más de cerca a SilkJS.

5

Meteor. Construido sobre Node.js y creciendo very rápido.

En Meteor, el código del servidor se ejecuta en una sola cadena por solicitud, no en el estilo de devolución de llamada asincrónico típico de Node. Encontramos que el modelo de ejecución lineal se ajusta mejor al código de servidor típico en una aplicación Meteor.

ACTUALIZACIÓN Un año más tarde - Why Meteor

Cuestiones relacionadas