Soy muy nuevo en el nodo, así que necesito ayuda con este. Entiendo cómo mostrar un archivo html usando nodejs como este:
(nodo)
var http = require('http'); let fs = require("fs"); http.createServer(function (req, res) { fs.readFile("test.html",(err, data) => { if(!err) { res.writeHead(200, {'Content-Type': 'text/html'}); res.end(data); } }); }).listen(8080);Sin embargo, quiero saber cómo usaría esto para hacer cosas que haría en js como
(js)
document.getElementById("thisElement").style.backgroundColor = "#234"; document.getElementById("thisElement").addEventListener("click",() => { doThings(); });Y otras cosas js relacionadas.
Entiendo cómo mostrar un archivo html usando nodejs como este:
Eso no "muestra un archivo HTML usando nodejs".
Eso envía un archivo HTML a un cliente HTTP, como un navegador web.
Un navegador web puede mostrar un archivo HTML.
Sin embargo, quiero saber cómo usaría esto para hacer cosas que haría en js como
Los navegadores web toman HTML, generan un DOM, ejecutan JavaScript con API web del lado del cliente y proporcionan una interfaz de usuario para que el usuario interactúe con él.
Node.js no lo hace.
El lenguaje de programación JavaScript es un lenguaje de programación de propósito general.
Los navegadores web proporcionan API específicas para hacer cosas que son útiles para hacer en un navegador web.
Node.js proporciona API para hacer cosas en otros contextos (como ejecutar un servidor HTTP o escribir utilidades de línea de comandos).
No puede tomar JS diseñado para ejecutarse en un navegador web y ejecutarlo en Node. No tiene sentido.
(Puede escribir código que se ejecute en ambos contextos (generando un número aleatorio para tomar un ejemplo trivial) pero la mayoría del código no es tan genérico).
Ves esta línea en tus códigos fs.readFile("test.html",(err, data) => {
esta línea va y selecciona el archivo test.html, que está disponible en su lado del cliente ahora, cualquier cosa relacionada con este archivo test.html es una cosa del cliente ya que es html, en él declarará las etiquetas y las referencias del archivo javascript como se muestra a continuación
<html> <body> <script src = "../../to/js/files.js"></script> <!-- or as below --> <script> //now in here you get to do your fun stuffs as you asked above document.getElementById("thisElement").style.backgroundColor = "#234"; document.getElementById("thisElement").addEventListener("click",() => { doThings(); }); </script> </body> </html>No creo que pueda hacerlo de esta manera con el nodo porque no es su propósito, el nodo se creó para servir cosas, no para cambiar html o actuar en el navegador como desee, no hay DOM en el nodo.
PERO, puede intentar leer el archivo y editarlo insertando contenido, pero será algo tan difícil de hacer una vez que necesite cambiar el texto y probablemente será una matriz o puede intentarlo con el motor de termplate express, usted puede usar plantillas que son mutables cuando las sirve con un nodo, por lo que puede usar variables como valores html.