Me preguntaba cómo se haría para desarrollar un sitio web desde cero con Node.js. Entiendo cómo podría posiblemente hacerlo, pero estoy interesado en la mejor práctica del diseño.
Necesito este sitio web teórico para:
- Haz mucho AJAX
- Sea muy sencillo
- Ser relativamente pequeño
- Conéctese a ... digamos un servidor MySQL
En PHP, la construcción de un sitio web bastante pequeño fue muy sencillo: configuré PHP en Apache y un servidor MySQL y luego hice algo como:
includes/db/
que tiene connect.php para conectarse a la base de datos, un archivo con funciones comunes relacionadas con la base de datos y así sucesivamenteincludes/layout/
que tenía cosas como footer.php, header.php y otras cosas relacionadas con el diseñoincludes/users/
para manejar acciones relacionadas con el usuario
Luego, PHP simplemente le permite crear páginas e incluir estos archivos juntos para formar un sitio web; podría hacer algo como:
<?php
require_once('inclues/users/user_session.php');
require_once('inclues/db/connect.php');
require_once('inclues/design/header.php')
?>
// Other php or html or related content relating to the page
<?php
require_once('inclues/.../footer.php');
?>
Me preguntaba qué podría ser similar en Node.js; estoy buscando una forma de lograr esto que sea lo más simple , rápida y directa posible.
Si la respuesta no es simple, me encantaría una recomendación de libro, no me importa leer.
Me encanta la programación basada en eventos, me encantan las capacidades de JavaScript y estoy muy entusiasmado con Node.js. Quiero aprender a desarrollar este tipo de cosas con él de la manera correcta desde el principio.
fuente
Respuestas:
Para comenzar con las malas noticias: como Node.js es una técnica bastante joven, creo que encontrará que el proceso de crear un sitio web completo y mantenerlo / operarlo será muy diferente al que está acostumbrado actualmente.
Josh3736 agrega: Una vez que descubras cómo funcionan Node.js y sus diversos paquetes (Connect, Express), descubrí que puedes desarrollar nuevos sitios muy rápidamente.
Sin embargo, las asperezas que existen actualmente en Node.js, combinadas con el ritmo rápido de su desarrollo y todos los módulos involucrados, pueden complicar las cosas y hacer las cosas menos simples, rápidas y directas de lo que le gustaría.
Habiendo dicho eso, estas son las buenas noticias:
El Administrador de paquetes de nodo, la NGP tiene una gran cantidad de herramientas buenas y marcos para ampliar la funcionalidad de los huesos desnudo de Node.js, lo que es adecuado para crear un servidor web.
Lo más notable sería Express Framework, que contiene casi todo lo que necesita para ejecutar un servidor web (incluidas las cookies, las sesiones y el enrutamiento de rutas). Además, Express admite parciales, que se encargan de su encabezado y pie de página.
Express está construido sobre Connect de Sencha . Las cookies y las sesiones en realidad funcionan con Connect. Express es lo que simplifica su enrutamiento y maneja vistas / parciales. Entonces, si no necesita todos los detalles que vienen con Express, puede optar por Connect.
Si le gusta usar plantillas para estos parciales, Jade Template Engine puede acelerar las cosas por usted. Aunque Josh3736 señala que Jade es lento y significativo en espacios en blanco. Puede encontrar una descripción más completa aquí , que incluye su favorito, doT . (Yo personalmente uso Node.js solo para
socket.io
aplicaciones basadas, por lo que él es una mejor fuente que yo cuando se trata de plantillas).Usted puede conectarse a MySQL desde Node.js utilizando el DB-mysql módulo, pero si no es necesario que debido a que usted está accediendo a los datos conectados a un sistema ya existente, te aconsejo utilizar una más ... 'moderna ', que consiste en utilizar una base de datos NoSQL como parecen hacer la mayoría de los proyectos Node.js. MongoDB a través de Mongoose es la forma popular de hacerlo.
O si solo está almacenando objetos que le interesan, simplemente opte por Redis (que probablemente necesitará en algún momento de todos modos).
Una vez que su sitio web esté completo, deberá implementarlo y asegurarse de que siga funcionando. Hay muchas formas de hacerlo, como usar el soporte de clúster integrado o usar el
forever
módulo npm más fácil de usar. Vea esta pregunta mía SO para obtener más información.Conclusión :
A lo que estoy tratando de llegar es a esto:
Preguntar cuál es la mejor práctica para crear un sitio web en Node.js es casi lo mismo que preguntar cuál es la mejor forma de crear un sitio web en PHP: 100 desarrolladores te darán 100 respuestas diferentes.
NPM está bendecido con una variedad de excelentes marcos que simplifican enormemente muchas de las tareas involucradas, pero todo se basa en la preferencia, cuál es el camino a seguir realmente.
Como he dicho, Node.js es todavía una técnica bastante joven, por lo que ninguno de los marcos o herramientas adicionales ha surgido como 'estándar de facto' todavía; para la mayoría de las cosas que está intentando hacer, es probable que existan varias alternativas, y espere que su código se rompa cuando use la mayoría de ellas durante las actualizaciones, porque el desarrollo de Node.js y la mayoría de los módulos es rápido. Tendrás que seguir el ritmo.
Poniéndolo todo junto :
Como dije, mi uso principal de producción para Node.js es poder usar
socket.io
, por lo que no tengo ningún buen ejemplo de producción presente (y como estoy a punto de irme de unas merecidas vacaciones, no tampoco tengo tiempo para armar uno). Sin embargo, hay algunos buenos ejemplos:Nuevamente, el camino a seguir (y posteriormente el ejemplo a seguir) depende en gran medida de sus objetivos finales y de las técnicas elegidas, pero afortunadamente hay muchos recursos disponibles para todas las opciones disponibles. La mayoría de los módulos utilizan repositorios de GitHub bien documentados e incluyen ejemplos en combinación con los módulos más populares (consulte el
/examples/
directorio que parece estar presente en la mayoría de los repositorios).¡Buena suerte! (Y gracias a Josh3736 por corregir mis errores).
fuente