java - tan - node js vs php
Nodejs: ¿Dónde o cómo escribir lógica de negocios complicada? (6)
Creo que te sorprenderá la cantidad de trabajo que puedes realizar en JavaScript a través de Node.js. Hay un https://github.com/joyent/node/wiki/modules disponibles para Node y se están escribiendo más todo el tiempo . Además, las extensiones nativas también están disponibles para aquellos momentos en los que puede ser necesario bajar a un nivel inferior.
Si cree que hay una brecha en la que Node no podrá proporcionarle la lógica de su negocio, eche un vistazo a NPM o dé a Google un servicio rápido para ver si alguien más ya ha resuelto su problema.
Recientemente me presentaron a node.js y paquetes geniales como Express y jade. Tengo pocas preguntas constantemente golpeando mi puerta:
Si selecciono node.js para construir mi próximo sitio web, ¿usaré JavaScript para escribir mi lógica complicada del lado del servidor? pero no creo que puedas comparar JavaScript con Java o Python para escribir código del lado del servidor, ya que tienen un vasto océano de bibliotecas. ¿Está node.js realmente destinado a ello? o me he perdido algo?
¿Puedo llamar a Java o Python desde node.js?
Diría que te perdiste algo, más específicamente, el propósito principal de Node.js, es decir, el modelo de E / S asíncronas.
Comencé un pequeño proyecto de mascotas para probar Node.js: cómo se "siente" y cómo programarlo. Me impresionó la facilidad de trabajo en este ecosistema: el código Node.js es fácil de escribir (aunque su paradigma asíncrono no es tan sencillo para el programador convencional), las bibliotecas son fáciles de construir, etc. Incluso npm es increíblemente fácil: Acabo de encontrar que la forma más sencilla de proporcionar un código propio como una biblioteca es hacer un paquete público, ¡y es absurdamente fácil!
Sin embargo, no hay muchas herramientas buenas para trabajar con Node.js. Tal vez porque es demasiado fácil hacer cualquier cosa, la mayoría de las bibliotecas son soluciones parcialmente documentadas e indocumentadas.
Además, tenga en cuenta que la diferencia relevante de Node.js no es el lenguaje JavaScript, sino el modelo de E / S asíncrono. Es el aspecto más interesante de Node.js, pero el estilo de programación asíncrono no está tan probado como la forma convencional de desarrollo web. Tal vez sea realmente la maravilla que se propaga, o quizás, no es tan buena como se prometió.
Incluso en el caso de que valga la pena, ¿tendrá suficientes desarrolladores para mantener un código base tan inusual (al menos todavía)? Si puede obtener muchas ventajas de la forma de vida asíncrona de Node.js, puede usar lenguajes y marcos más consolidados, como Twisted for Python (que es mi idioma preferido, así que tenga cuidado con mi opinión :) ). También puede haber algo como esto para Java. De todos modos, sospecho que no tiene mucho interés en este modelo por ahora, ya que su pregunta se centra más en los idiomas que en el paradigma de la programación, por lo que Node.js no tiene mucho que ofrecerle de todos modos.
Entonces ... no, no desarrollaría algo profesionalmente en Node.js por ahora, aunque creo que es divertido e instructivo estudiar. Sin embargo, puede hacerlo: simplemente no lo haga sin tener en mente el propósito principal de Node.js: la programación asincrónica de E / S, dirigida por eventos. Si es lo que quieres, Node.js es una buena alternativa.
Hay algunas cosas que JavaScript simplemente no puede hacer. Si te encuentras con esos Node, es posible que no sea la mejor opción para tu aplicación. Sin embargo, es probable que pueda lograr la mayor parte de lo que necesita.
En cuanto a que la API está limitada, le sugiero que eche un vistazo a npm y todas las bibliotecas en su repositorio. Específicamente los como underscore.js . Muchos apuntan a llenar los vacíos de lo que carece JavaScript nativo en comparación con otros idiomas.
No estoy seguro de lo que la mayoría de estas personas están hablando.
Un "vasto océano de bibliotecas" es algo en lo que la comunidad está trabajando activamente. Verifique esto: http://search.npmjs.org/#/_analytics - hubo 8 paquetes publicados ayer
No va a resolver su diseño de software para usted. En cuanto a dónde y cómo escribir la lógica de negocios, muchos de nosotros adoptamos mvc o mvvm o algo parecido. Si está creando una aplicación y le gusta la forma en que los Rubyists (por ejemplo), estructuran su código, tal vez piense en hacer algo como eso: nadie le dirá cómo estructurar su código.
Ver https://github.com/joyent/node/wiki/modules
Algunas de las bibliotecas más populares para hacer el día a día:
- Express: http://expressjs.com/ - https://github.com/visionmedia/express
- Inspirado en Sinatra, úsalo para construir una aplicación web típica
- Estadísticas: 3407 observadores, 286 horquillas, en la solicitud de extracción 778
- ¡Compara eso con el mismo Sinatra! 2529 observadores, 366 tenedores
- Con connect, soporta todo tipo de middleware:
- sesiones
- todo tipo de enrutamiento,
- archivos estáticos
- unos 15 motores de plantillas diferentes
- validación, manejo de formularios, etc, etc
- Socket.io: http://socket.io/ - hacerlo ''en tiempo real''
- DNode: https://github.com/substack/dnode - haga rpc entre cualquier cosa
- Backbone.js: http://documentcloud.github.com/backbone/ - MVC
- Variedad de técnicas para reutilizar tus modelos en el servidor:
- http://andyet.net/blog/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/
- Spine.js: http://maccman.github.com/spine.tutorials/index.html - MCV
- Técnicas para reutilizar código en el servidor:
- http://maccman.github.com/spine.tutorials/node.html
- caolan / async: https://github.com/caolan/async - Ayude a administrar su lógica empresarial asíncrona
- Base de datos, elige tu poision
- node_redis, https://github.com/mranney/node_redis - o uno de los otros ocho clientes
- "Este es un cliente completo de Redis para node.js. Soporta todos los comandos de Redis"
- node-mysql, https://github.com/felixge/node-mysql - o uno de los otros once clientes / orms
- node-mongodb-native, https://github.com/christkv/node-mongodb-native
- node-postgres, https://github.com/brianc/node-postgres
- node_redis, https://github.com/mranney/node_redis - o uno de los otros ocho clientes
También hay una gran cantidad de ORM por ahí, si es tu maleta. Cosas como http://mongoosejs.com/ , http://sequelizejs.com/ y amigos
El desarrollo basado en pruebas está en el núcleo del nodo. Hay 15 paquetes diferentes de TDD para elegir, desde el análisis de cobertura de código completo hasta los módulos de afirmación personalizados.
Decir que todos los módulos están incompletos es una tontería. Hay un grupo increíblemente dedicado de personas que construyen y mantienen toneladas trabajando de código abierto en esta comunidad todos los días.
Puede haber razones para pasar el nodo, pero no es para una comunidad inactiva o la falta de bibliotecas.
Por supuesto, puede usar python, php, c ++ u otras tecnologías con nodejs ''porque el nodo puede ejecutarlo como un proceso secundario . Nodejs le da la libertad de usar cualquier tecnología que desee dentro de sí misma. Puedes usar lo que quieras combinando la mayoría de los programas de rendimiento.
Ryan no comenzó con JavaScript. Una gran parte de por qué Node se creó en JavaScript es que JavaScript carecía de vastos océanos de bibliotecas.
Esos vastos océanos de bibliotecas están casi todos escritos en código de bloqueo.
Para aprovechar al máximo Node.js necesita limitar su auto a bibliotecas que no bloquean. Lo que significa que podría necesitar escribir algunas bibliotecas para completar su proyecto en Node.js.