У вас есть 2 способа:
1) чтение index.html
содержимого и подача его по корневому URL:
const fs = require('fs');
const indexFileContent = fs.readFileSync('path/to/index.html'); // caching file content to variable, to avoid re-reading it
app.get('/', (req, res) => {
res.send(indexFileContent);
});
2) определение ejs
рендерера как .html
рендерера файловтоже:
const path = require('path');
const bodyParser = require('body-parser');
const express = require("express");
const app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine','ejs'); // make sure You've installed ejs: npm i --save ejs
app.engine('ejs', require('ejs').renderFile);
app.engine('html', require('ejs').renderFile); // defining html renderer engine
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
app.get('/', (req, res) => res.render('index'));
// API controllers
const AuthController = require('./controllers/authenticate-controller');
const RegistrationController = require('./controllers/register-controller');
// API endpoints
app.post('/api/authenticate', AuthController.authenticate);
app.post('/api/register', RegistrationController.register);
app.listen(8012);
Плюсы и минусы:
1-й пример будет просто читать index.html один раз до переменная и будет обслуживать этот контент, но потребуется перезапустить приложение, чтобы перечитать этот файл.
2-В примере используется .html
файлы внутри папки views
в виде ejs
файлов, что дает возможность передавать переменных в html-файлы, что на лучше это просто отправка файлов, + Вы можете включить один html внутри другого, используя <% include partials/header.ejs %>