6

Sto cercando di sostituire PHP con qualcosa di meglio (tutti sembrano dire che PHP è malvagio, giusto?), E considerando JavaScript sul lato server.Framework javascript lato server

node.js sembra molto popolare, ma temo che impazzirò con roba asinosa. È possibile scrivere il codice normale (sincrono) sotto il nodo?

My whishlist: script web e da riga di comando, buone prestazioni (su The Computer Language
Benchmarks Game
, V8 sembra essere un ordine di grandezza più veloce di PHP), preferibilmente sviluppato da qualche azienda o comunità in modo che un giorno non venga abbandonato. , comunità di utenti con una libreria di moduli decente.

Non considero vari framework basati su Rhino, poiché Rhino viene eseguito in Java e non sono in Java, consapevole del suo ingombro di memoria e l'idea di compilare javascript in java non ha senso per me.

Abbiamo passato un po 'di tempo su google, e ho trovato numerosi progetti: Myna, Meteor, GromJS, APE, GLUEscript, v8cgi, silkjs, wakanda, GPSEE, sorrowjs, ejscript, Persevere, PhantomJS.

Qualcuno ha qualche esperienza con quelli? Qualsiasi raccomandazione è benvenuta.

+1

Se non sei pronto per il modello asincrono, allora hai ragione: Node.js ti faranno impazzire. – Pointy

+0

@ Sandman4 ... Posso sentirti su questa domanda .. Ho cercato nuove cose fantasiose per le mie semplici implementazioni qualche tempo fa, ma non lo faccio più, a meno che non serva a fini commerciali. La sfida con le fantasiose implementazioni è il mantenimento a lungo termine. Se la tua organizzazione ha abbastanza competenze PHP, fallo in PHP .. O semplice .NET (sono consapevole che .NET non è semplice però: D) .. O usa Nodo se la tua organizzazione si muoverà lungo quel percorso per costruire le competenze! – Hasith

+0

Rhino non si compila in Java, si compila in bytecode. –

risposta

5

Well Node.JS è la strada da percorrere se mi chiedi. È possibile scrivere codice sincrono, ma farlo solo negli script della riga di comando. Quando scrivi un server web devi andare sulla rotta asincrona altrimenti non funzionerà perché JavaScript è single threaded e tutto si ferma.

Il motivo per cui Node.js è così veloce è dovuto all'IO asincrono.

Ci si abituerà alle richiamate e agli eventi e dopo un po 'non si desidera tornare indietro.

Node.js è una piattaforma basata sul runtime JavaScript di Chrome per semplificare lo creando applicazioni di rete veloci e scalabili. Node.js utilizza un modello di I/O non bloccante basato sugli eventi che lo rende leggero e efficiente , perfetto per applicazioni in tempo reale ad alta intensità di dati che eseguono su dispositivi distribuiti.

+2

Non penso che _JavaScript_ sia single threaded, è un _implementation_ che è single threaded. Solo io non so se si tratta di una limitazione di node.js o di V8 stesso. – Sandman4

+0

Javascript è intrinsecamente parallelo perché utilizza chiamate asincrone. Il problema è che viene eseguito su un interprete che di solito è a thread singolo. –

+0

JavaScript è pensato per essere usato come è comunemente usato (sorpresa a sorpresa). Ha il thread principale che esegue JavaScript interpretato che funziona in un ambiente non bloccante e più worker che lavorano su thread separati (in un ambiente IO di blocco). Può essere visto chiaramente in Node.js (moduli JavaScript e C++), ma in realtà è fatto anche in tutti i (principali) browser (Node.js utilizza il motore V8 dopo tutto). Con questo in mente, sta a te decidere se lo chiami single-threaded o multi-threaded. – Pijusn

4

Hai guardato Comparison of server side JavaScript solutions?

Node.js è popolare. Per quanto riguarda la velocità del php, hai guardato allo HipHop? Riscrivere il tuo codice in javascript probabilmente non darà granché un miglioramento delle prestazioni rispetto a php.

+0

Ho passato un giorno intero a googling quindi sì, ho visto la wikipedia. La mia idea non è solo una performance (anche se il punto di riferimento nel gioco di benchmark è impressionante), voglio solo provare qualcosa di diverso da PHP, forse un po 'più "ordinato". – Sandman4

4

Nodejs è un'opzione molto buona su molti fronti.

Ma tu dici che sei preoccupato per la sua natura asincrona.

Due punti su questo.

  1. non è mai necessario preoccuparsi di async e può continuare a scrivere l'applicazione dal basso come PHP. Questo è se non stai eseguendo "blocking IO".

  2. Se si sta eseguendo "blocco di I/O" come la lettura di un database o l'accesso al file system di quanto necessario sarà necessario gestire async.Fortunatamente ci sono buoni modi per farlo senza la necessità di cambiare troppo le tue pratiche di codifica.

3

Grazie per aver fornito l'elenco di "numerosi progetti" che hai trovato. Attualmente stiamo utilizzando Microsoft ASP 3.0 ("Classic ASP", in arrivo con IIS) che fornisce un'implementazione JavaScript dal lato server dal 1996: è veloce, maturo e grazie alla tecnologia COM abbastanza estendibile. Se non sei corretto su open source, vale la pena dare un'occhiata. Per la nostra strategia open source, daremo un'occhiata più da vicino a SilkJS.

5

Meteor. Costruito su Node.js e in crescita very veloce.

In Meteor, il codice server viene eseguito in un singolo thread per richiesta, non nello stile di richiamata asincrono tipico del nodo. Troviamo che il modello di esecuzione lineare si adatta meglio al tipico codice server in un'applicazione Meteor.

UPDATE Un anno più tardi - Why Meteor

Problemi correlati