¿Cuál es el mejor “marco web de pila completa” (con andamios, MVC, ORM, etc.) basado en Node.js / JavaScript del lado del servidor?

Su comprensión es correcta: Node.js no es un marco de aplicación web. Es una plataforma para crear aplicaciones. Sin embargo, puede parecer un marco a primera vista, porque, al igual que un marco, incluye un conjunto de herramientas útiles para crear aplicaciones web (como módulos para escribir en el sistema de archivos o realizar solicitudes HTTP).

Sin embargo, hay una gran cantidad de marcos creados para esta plataforma, que le proporcionan un conjunto de funcionalidades de mayor nivel, un nivel de abstracción para simplificar y acelerar su trabajo de construcción.

Yeoman no es ese marco, pero es una gran herramienta con el mismo objetivo (simplificar y acelerar; sin embargo, en lo que respecta al flujo de trabajo ). Proporciona andamios, configurando nuevas aplicaciones y sitios basados ​​en esqueletos llamados “generadores”. Hay generadores para aplicaciones de Angular.js, proyectos de front-end simples que usan HTML5 Boilerplate (y quizás CoffeeScript y Stylus), y mucho más. Está destinado a funcionar con Grunt (herramienta de compilación) y Bower (herramienta de administración de dependencias), un trío fantástico. Brunch es otra herramienta de construcción maravillosa con este tipo de “andamio esqueleto”.

Personalmente, no soy un fanático de los frameworks de pila completa: me gusta elegir (mezclar y combinar) las herramientas adecuadas para cada situación y producto individual. Una talla nunca se ajusta a todos. Sin embargo, en estos días, hay tantos de estos marcos y alternativas que es alucinante: a menudo me dan ganas de ir lo más básico posible, seleccionando cada parte pequeña con mucho cuidado (o mejor aún, crearla yo mismo). Dicho esto, ciertamente veo cómo pueden ser atractivos y útiles en muchas situaciones.

En cuanto a las opciones disponibles , últimamente se ha hablado mucho sobre Meteor por ser una solución completa del lado del cliente y del servidor (integrada; mientras que otras soluciones suelen ser una u otra). El Mojito de Yahoo parece tener aspiraciones similares, al igual que Derby y Tower . Luego hay una lista impresionante de soluciones MVC del lado del servidor: Geddy , Locomotive , Sails.js , Sleek.js y muchas más.

Una solución que me parece muy interesante es Opa , un lenguaje y un marco basado en JavaScript y compilado en JavaScript: supuestamente no bloquea con la comprobación de tipo incorporada, los objetos de tipo estático, las consultas de bases de datos, la compatibilidad total con JavaScript normal (y bibliotecas como jQuery ), etc. Y, por supuesto, esta pequeña pepita:

Escriba simultáneamente el código frontend y backend , en el mismo idioma, dentro del mismo módulo. Aún mejor: el Opa Slicer automatiza las llamadas entre el cliente y el servidor. ¡No más llamadas AJAX escritas manualmente ni serialización de valores!

Y cuando automático no sea suficiente, agregue sugerencias al código para aplicar el lado del cliente o del servidor, privacidad, síncrono o asíncrono.

Qué tan bien funciona en la práctica, no lo sé. Pero es interesante.

Un marco de pila completa más tradicional que encuentro interesante es Partial.js , porque es muy autónomo y no tiene dependencias. Sin embargo, tampoco he usado eso.

Si tal solución es lo que necesita , le sugiero que eche un vistazo a sus sitios, documentación y código fuente para averiguar cuál le conviene más.

Ahora, si está buscando armar su propia caja de herramientas , vale la pena señalar que muchos marcos más grandes usan Express.js como base; Es un micro marco inspirado en el marco Sinatra de Ruby, ambos muy fáciles de llevar. Proporciona un excelente punto de partida. Por último, MicroJS enumera excelentes herramientas que encajan perfectamente en cualquier caja de herramientas.

Es casi algo nuevo que preguntará si está buscando construir su primera aplicación web utilizando un marco en el Nodo Js.

También pasamos un par de días en ello y recorrimos la web en busca del marco perfecto. ¡Por supuesto, ninguno existe! Habrá un montón de blogs que comparan varios marcos, y ninguno de ellos le dará una respuesta definitiva ya que no existe. Entonces, después de jugar con algunos, no dudes en entrar.

Para nosotros, http://mean.io nos dio la mejor ventaja inicial, y decidimos usar eso como nuestra aplicación repetitiva. Mientras trabajábamos en él, vimos un gran potencial para contribuir de nuevo a este marco, y ahora me encuentro como un contribuidor principal en github.com/linnovate/mean. No creo que este sea un artículo sesgado, pero es un descargo de responsabilidad. 🙂

En el camino, me sentí igualmente frustrado y encantado con el mundo de Node.js. Sinceramente, no creo que tantas opciones en el caso de los marcos web para node.js sean incluso buenas para la comunidad. (¡Y no, no todos existen por una razón!) Hay mucho talento excelente que se distribuye en esta área, y si los esfuerzos se enfocaran más en menos repositorios, estos marcos estarían mucho más avanzados de lo que son hoy

La forma en que Ruby on Rails es casi sinónimo de Ruby, nadie lidera la carrera a distancia cuando se trata de marcos Node.js, y algunos ni siquiera están listos para el uso de producción. En consecuencia, la documentación sobre muchos de estos marcos es escasa. Pero sus desarrolladores están fácilmente disponibles en gitter e irc si desea comunicarse con ellos.

Me inclino hacia meanio por comodidad, pero estoy muy interesado en explorar sails.js e incluso hapi en el futuro. Creo que mientras hapi no está haciendo el concierto de popularidad, está dando silenciosamente todas las señales correctas. Basta con mirar la cola de problemas y la documentación.

TJ (creador de express, ejs, supertest, commander, nib … y más sobre él en Kel As ‘respuesta a ¿Cómo es TJ Holowaychuk tan increíblemente productivo?) Recientemente dejó la comunidad de Node.js Farewell Node.js.

Mi único consejo es acercarse con precaución. Para un proyecto de mascotas, está bien. Para un proyecto de producción, tenga cuidado. Sea muy claro sobre lo que requiere su aplicación y luego comience con el marco que le gustaría. No he visto a muchas personas cambiar entre los marcos de nodo js, ​​porque el factor de comodidad juega un papel muy importante.

Una de las soluciones existentes es la plataforma wakanda

Se basa en JavaScript con su capa del lado del servidor con compatibilidad con algunas API de node.js y también puede usar nodejs directamente en hilos dedicados / compartidos. Incluye wakandaDB, una base de datos de objetos NoSQL con SSJS nativas y API REST que hacen que los ORM sean inútiles. La próxima versión Enterprise propondrá una capa ORM opcional que proporciona las mismas API en la parte superior de las bases de datos SQL (con algún costo de rendimiento, por supuesto).

ACTUALIZACIÓN 1: Si bien Wakanda se basa inicialmente en el servidor en webkit JavaScriptCore por muchas buenas razones, ya que V8 ahora es más maduro y también puede manejar 64 bits, se han realizado muchas pruebas recientemente, las compilaciones internas con este motor se han probado con bastante éxito. resultados. Debería mejorar la interoperabilidad con node.js.

ACTUALIZACIÓN 2: El núcleo de esta capa ORM debería llegar a la edición gratuita de la comunidad (aún en discusión). Esta característica se denomina internamente Clases de datos virtuales y puede exponer datos de cualquier fuente (Servicio web, RPC, FileSystem, SQL o NoSQL DB, Notificaciones del sistema, …)

Echa un vistazo a KrackenJS del equipo de PayPal. Incluye seguridad, plantillas de vista, i18n y estructura, documentos, ejemplos y comunidad.

– krakenjs – Dale a tus aplicaciones express node.js algunos brazos extra

Para el enfoque ORM, puede consultar el marco Loopback de IBM / Strongloop, principalmente para construir API. Incluye la generación automatizada de modelos Swagger, control de acceso basado en roles, creciente base de datos, API y capa de abstracción de archivos. Tienen herramientas, puerta de enlace, comunidad y complementos.

– LoopBack – Node.js framework

Vue.js y Angular están más cerca de la pila completa pero no son específicos de NodeJS. Espero que estos consejos te den más opciones para explorar.

¡Aclamaciones!

El marco web de Geddy es un excelente lugar para comenzar. Tiene un ORM que funciona con MongoDB, Postgres y Riak (con más backends de datos que se agregan todo el tiempo), un sistema de plantillas flexible que admite EJS, Jade, Moustache y Manillares. Tiene sistemas de configuración bastante buenos (producción, desarrollo, entorno, etc.), tiene pruebas incorporadas con algunos comandos simples de jake y también tiene andamios / generadores.

http://geddyjs.org

Hay meteorito: http://www.meteor.com

De acuerdo con este artículo El mejor marco Node.js para su proyecto: Express.js, Koa.js o Sails.js

Puede elegir Sails.js o Koa.js o Express.js

En Cleveroad tenemos un departamento de desarrollo web con todo el personal que ha creado más de cien aplicaciones con el marco Express.js. ¿Por qué elegimos Express.js cuando creamos una aplicación Node.js?

En primer lugar, la vasta y activa comunidad de desarrolladores es importante tanto para los recién llegados como para los desarrolladores experimentados al crear aplicaciones web con Node.js. Ser capaz de obtener el asesoramiento profesional es un gran beneficio. De esos tres marcos Node.js que estamos considerando, Express.js tiene la comunidad más grande. Solo para comparar, el marco tiene 7.9k seguidores en Stack Overflow, mientras que Sails.js solo tiene 1k. Koa, desafortunadamente, se arrastra por detrás.

En segundo lugar, en cuanto a la documentación oficial, los documentos de Express.js son lo suficientemente completos como para ayudar a los desarrolladores a comenzar y brindar soporte en casos difíciles.

Mucha gente ha estado hablando de Derby: http://derbyjs.com/

Todavía tengo que usarlo para algo significativo, sin embargo, por lo que he leído, el consenso general parece ser que es un marco que muestra mucha promesa pero que aún no está listo para la producción.

Aquí hay un artículo decente que compara los pros y los contras de los principales marcos disponibles para Node.js en este momento: http://ocdevel.com/blog/nodejs-f

Hoplon (hoplon dot io) es un marco web ClojureScript de pila completa muy impresionante.

Clojure tiene una comunidad robusta del lado del cliente que utiliza la recarga en caliente con Om (y obtiene un rendimiento excelente). Siento que la eliminación del código muerto con la combinación de clojure y el compilador de cierre de google no tiene comparación.

Scala, sin embargo, le permite escribir llamadas RPC de verificación entre el cliente y el servidor con Autowire.

Y luego está F #, que tiene el poder único de compilar para iOS y Android de forma nativa a través de Xamarin, y tiene detrás el rico mundo C # / .NET. Ah, y puede compilar F # directamente a ES6 / Babel, y luego a cualquier versión de ES que necesite admitir.

Creo que lo que falta con Elm / purescript es la configuración / comunidad del servidor de fondo.

Además, no olvidemos a Ocaml. Todavía tengo que cavar para ver qué opciones de pila completa están disponibles allí.

Puede usar mi kit o marco personalizado.

dg92 / node-express-postgres-redis-starter-ki

No MVC

Simple y fácil de usar

Altamente escalable

Módulo de autenticación listo

Rápido y rápido

Método de consulta en cadena que le ayuda a escribir subconsultas y consultas complejas

Use Express, postgresql, ORM hecho a sí mismo (hecho sobre knex), redis

También tiene un módulo de gestión de colas.

Si está buscando un marco de pila completa basado en la convención sobre la configuración, ahora hay uno basado en SailsJS y EmberJS – SANE: http://sanestack.com/

Soy el autor principal detrás de esto, así que esta es una respuesta sesgada, pero si estás acostumbrado a los marcos basados ​​en convenciones, deberías probar SANE. Se está separando completamente el cliente y el servidor, al tiempo que les facilita trabajar juntos. Eso tiene los beneficios de que puede servir al cliente completamente separado (si lo desea) e incluso crear múltiples clientes. No hace ninguna diferencia para el componente del servidor. Pero también puede usar el servidor para servir al cliente. Utilizando el poder para cli de sails y ember, puede crear una API REST completamente funcional en cuestión de minutos. Tiene soporte para docker y otras cosas incorporadas, échale un vistazo.

Sails.js : (Realtime MVC Framework for Node.js) realmente brilla en Node.js World. Te permite hacer un desarrollo basado en API en cuestión de minutos. Lo estamos utilizando en producción y muy contentos con su rendimiento.

No olvides mirar el proyecto Unitech pm2 : Unitech / pm2 que te permite utilizar más de un núcleo de CPU en lugar de ejecutarlo en un bucle de evento de núcleo único. He medido el rendimiento usando httperf y es capaz de manejar 50000 req / s en una CPU Xeon de 12 núcleos.

MEAN.JS – Full-Stack JavaScript Boilerplate de los creadores de MEAN.IO. es una buena opción

Pero al mismo tiempo, personalmente creemos que los marcos del lado del servidor JS no se recomiendan si tiene plazos más ajustados y necesita componentes que faciliten el desarrollo, el código sea más limpio y abstracto.

Por ejemplo: los frameworks Java del lado del servidor como Grails tienen componentes Scaffolding, MVC, ORM, BPM más maduros.

Tenemos un equipo de desarrollo asesino que todavía prefiere Java sobre JS debido a las razones anteriores.

La mayoría de las nuevas empresas prefieren aplicaciones atractivas en un corto período de tiempo que puede ir a las pruebas de los usuarios. Una vez que haya suficiente tracción y si definitivamente necesita reescribirse, se pueden considerar los frameworks JS fullstack. Las startups rezan para que tengan este problema y eso significa que sus suposiciones eran correctas. Difícil para los perfeccionistas ser empresarios.

Esta es una pregunta ideal sobre cómo equilibrar el tiempo de desarrollo con el valor del producto.

Este no es un todo en uno, pero es una combinación que he usado varias veces para un desarrollo robusto y eficaz. Todos los elementos son livianos, pero como de costumbre, el todo es mucho mayor que la suma de las partes.

Servidor: nodejs + express + Q + redis (comunicaciones de clúster) + mysql (sin ORM)
Cliente: jquery + bootstrap + (opcional) angular

Cree API de estilo REST en express, use AJAX asíncrono desde el cliente.

Opa: El Marco de Opa para Javascript ha existido durante 3 años y proporciona andamios, MVC, ORM (con una fuerte tipificación estática, una característica rara), plantillas (con tipificación).

El tiempo de ejecución de Opa es Node / Mongo o Node / Postgres.

Yo votaría por Sails.js y Meteor.js para su consulta específica. Están bastante completos. Sails se basa en el marco ExpressJS, por lo que es relativamente fácil de entender en mi opinión, aunque realmente es una cuestión de elección.

Tendría algunas reservas con cualquier cosa que diga SIGNIFICADO para un principiante, con un gran énfasis en la ‘A’ como en AngularJS porque, tan bueno como es, para un principiante, lo lleva en una dirección totalmente diferente y muy obstinada. Si eres un principiante, adhiérete a la vainilla simple JS para todo en el lado del cliente, para desarrollar un terreno fuerte primero y luego gradúa a Angular / React / Backbone / lo que sea. En el extremo del servidor, Node.js + ExpressJS es genial para comenzar y Sails y Meteor son encantadores como son.

Respuesta corta: Meteor.js

Muchos se quejan de que la libertad de elegir lo que les gusta es simplemente una mierda. Puede elegir Meteor y reemplazar la mayoría de las soluciones predeterminadas (partes arquitectónicas) con muchas otras opciones populares. El soporte de React y Angular, por ejemplo, se está convirtiendo en el núcleo (con 2.0) como reemplazos oficiales para su motor de renderizado local (y bastante bueno) Blaze. Pero si no desea esperar, hay opciones compatibles con la comunidad disponibles en este momento.

Meteor es diferente, y eso es genial. A veces pienso que es demasiado simple. A la gente no parece gustarle las cosas simples, que solían ser complicadas. Entonces todos dicen que está ocurriendo algo de magia, que creen que no pueden controlar; Ni comprender.

Pero si pasas por las partes, todo encaja fácilmente. Sin magia Solo bien pensado.

Si tuviera que construir un marco completo para habilitar aplicaciones web modernas de una sola página, probablemente terminaría con algo muy meteórico, pero sería 2020.

Perdón por la diatriba.

MEAN.JS es una plataforma de desarrollo de pila completa, que utiliza node.js y angular.js.

Estoy usando sahat / hackathon-starter para mi primer proyecto en nodejs.
Es bastante fácil entender el proyecto de ejemplo para un novato en js y nodejs.
El repositorio de github también está lo suficientemente activo como para esperar algo de soporte para el próximo año, supongo. También puede ofrecer su apoyo si lo desea.

También diré que puedo considerar migrar a mean.io o sailjs para la próxima versión.