Arquivos Estáticos no Express - Node.js
Vamos abordar como enviar arquivos HTML estáticos para o usuário utilizando Node.js + Express. Para trabalhar com arquivos estáticos no Express, há um componente especial chamado express.static()
Suponha que nosso projeto tenha a seguinte estrutura:
: principal arquivo da aplicaçãoapp.js
node_modules
package.json
: pasta onde será definido um arquivopublic
about.html
Na pasta public
about.html
<!DOCTYPE html>
<html>
<head>
<title>Sobre o site</title>
<meta charset="utf-8" />
</head>
<body>
<h1>Sobre o site</h1>
</body>
</html>
Agora, vamos definir o seguinte código no arquivo app.js
const express = require("express");
const app = express();
app.use(express.static("public"));
app.use("/", function(_, response) {
response.send("Página Principal
");
});
app.listen(3000, () => console.log("Servidor iniciado em http://localhost:3000"));
Para integrar o componente express.static
app.use()
app.use(express.static("public"));
Este chamado deve ser colocado antes de todos os outros chamados da função app.get()
Na função express.static()
public
app.use(express.static(__dirname + "/public"));
Aqui, a expressão especial __dirname
/public
Vamos executar a aplicação e acessar no navegador o caminho http://localhost:3000/about.html

É importante notar que, ao acessar o arquivo, indicamos apenas o nome do arquivo sem o nome da pasta public
sendFile
sendFile
Além disso, podemos alterar o caminho para o diretório de arquivos estáticos:
const express = require("express");
const app = express();
app.use("/static", express.static("public"));
app.use("/", function(_, response) {
response.send("<h1>Página Principal</h1>");
});
app.listen(3000, () => console.log("Servidor iniciado em http://localhost:3000"));
Agora, para acessar o arquivo about.html
http://localhost:3000/static/about.html
Em conclusão, podemos definir diversos caminhos para diferentes tipos de arquivos estáticos. Por exemplo, arquivos HTML em uma pasta, estilos em outra e scripts JavaScript em uma terceira:
app.use(express.static("html"));
app.use(express.static("styles"));
app.use(express.static("scripts"));