2012-06-28 15 views
5

He estado desarrollando en Node.js por solo 2 semanas y comencé a recrear un sitio web previamente escrito en PHP. Hasta ahora todo bien, y parece que puedo hacer lo mismo en Node (con Express) que se hizo en PHP en el mismo tiempo o menos.¿Cuáles son los problemas comunes de desarrollo, las trampas y las sugerencias?

he encontré con cosas que uno tiene que acostumbrarse a como el uso de módulos, módulos no compartir entorno común, y entrar en el hábito de usar las devoluciones de llamada para el sistema de archivos de bases de datos y las operaciones etc.

Pero, ¿existe ¿Cualquier cosa que el desarrollador pueda descubrir mucho más tarde es bastante importante para el desarrollo en un nodo? ¿Problemas que todos los demás que desarrollan en Nodo tienen pero no salen a la superficie hasta más tarde? Trampas? ¿Algo que los profesionales conozcan y los noobs no lo hagan?

Agradecería cualquier sugerencia y consejo.

+0

Lo primero: esta pregunta no encaja en StackOverflow. En segundo lugar: en general, el lenguaje ** casi nunca ** es un problema. La idea, la arquitectura de un sistema ** es casi siempre ** un problema. – freakish

+0

@freakish sí, a veces el idioma ES un problema si no se ajusta a las necesidades de su aplicación. Es por eso que probablemente no va a programar un sitio web en Assembler. –

Respuesta

19

Estas son las cosas que no se dan cuenta hasta más tarde:

  • Nodo hará una pausa en la ejecución para ejecutar el recolector de basura con el tiempo/periódicamente. Su servidor hará una pausa para un contratiempo cuando esto suceda. Para la mayoría de las personas, este problema no es un problema significativo, pero puede ser una barrera para construir sistemas a tiempo. Consulte Does Node.js scalability suffer because of garbage collection when under high load?
  • El nodo es un proceso único y, por lo tanto, de forma predeterminada solo utilizará 1 CPU. Existe un soporte de clustering incorporado para ejecutar múltiples procesos (generalmente 1 por CPU) y, en su mayoría, la comunidad Node cree que se trata de un enfoque sólido. Sin embargo, es posible que te sorprenda esta realidad.
  • seguimientos de pila a menudo se pierden debido a la cola de eventos, por lo que su tala y la metodología de depuración tiene que cambiar significativamente

Éstos son algunos obstáculos menores es posible que encuentre durante un tiempo (que todavía se topan con ellas)

  • Recordando hacer callback(null, value) en una devolución de llamada exitosa. Pasar nulo como primer parámetro es extraño y por eso me olvido de hacerlo. En lugar de eso accidentalmente hago callback(value), lo que el llamador interpreta como un error hasta que lo depuro por un tiempo y abofetee mi frente.
  • olvidándose de usar return cuando invoque la devolución de llamada en una cláusula de guardia y no desee que una función continúe ejecutándose después de ese punto. A veces, esto hace que la devolución de llamada se invoque dos veces, lo que causa todo tipo de mala conducta.

Éstos son algunos AGRADABLES cosas que tal vez no se dan cuenta inicialmente

  • Es mucho más fácil en Node.js, utilizando una de las bibliotecas de control de flujo impresionante, hacer operaciones complejas como la red de carga 3 recursos en paralelo, luego realiza 2 llamadas a DB en serie, luego escribe en 2 archivos de registro en paralelo y luego envía una respuesta HTTP. Este material es trivial y hermoso en el nodo y casi imposible en muchos entornos sincrónicos.
  • TODOS los módulos de nodo son nuevos y modernos, y en su mayor parte, puede encontrar un módulo bellamente diseñado con una gran API para hacer lo que necesita. Python también tiene grandes bibliotecas, pero compara el módulo cheerio o jsdom de Node con el BeautifulSoup de Python y mira a qué me refiero. Compare el módulo requests de python con el nodo superagent.
  • Existe un beneficio para la comunidad que proviene del trabajo con una plataforma moderna donde las personas se centran en el desarrollo web moderno. El contraste entre la comunidad de nodos y la comunidad PHP no puede ser exagerado.
+0

¡Gracias por la respuesta! –

Cuestiones relacionadas