Ich habe diese einfache Änderung aus dem Seed versucht und die entsprechenden .html-Dateien erstellt (z. B. index.html).
//app.set('view engine', 'jade');
app.set('view engine', 'html');
und diese Datei ist gleich geblieben:
exports.index = function(req, res){
res.render('index');
};
aber beim Laufen bekomme ich
500 Fehler: Modul 'html' kann nicht gefunden werden
Ist meine einzige Option "Ejs" zu verwenden? Meine Absicht war es, reines HTML in Verbindung mit AngularJS zu verwenden.
Die Antworten unter dem anderen Link funktionieren, aber um HTML auszugeben, müssen Sie überhaupt keine View Engine verwenden, es sei denn, Sie möchten ein funky Routing einrichten. Verwenden Sie stattdessen einfach die statische Middleware:
app.use(express.static(__dirname + '/public'));
Um zu erreichen, dass das Rendermodul HTML anstelle von Jade akzeptiert, können Sie die folgenden Schritte ausführen:
Installieren Sie Consolidate und Swig in Ihrem Verzeichnis.
npm install consolidate
npm install swig
fügen Sie Ihrer app.js-Datei die folgenden Zeilen hinzu
var cons = require('consolidate');
// view engine setup
app.engine('html', cons.swig)
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');
fügen Sie Ihre Ansichtsvorlagen als .html im Ordner "views" hinzu. Starten Sie Ihren Knotenserver neu und starten Sie die App im Browser.
Obwohl dies HTML ohne Probleme rendern wird, würde ich empfehlen, JADE zu verwenden, indem Sie es lernen. Jade ist eine erstaunliche Vorlagen-Engine. Wenn Sie dies lernen, können Sie besseres Design und Skalierbarkeit erzielen.
In Ihren apps.js einfach hinzufügen
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
Jetzt können Sie die ejs view engine verwenden und Ihre Ansichtsdateien als .html beibehalten
quelle: http://www.makebetterthings.com/node-js/how-to-use-html-with-express-node-js/
Sie müssen diese beiden Pakete installieren:
`npm install ejs --save`
`npm install path --save`
Und dann benötigte Pakete importieren:
`var path = require('path');`
Auf diese Weise können Sie Ihre Ansichten als .html anstelle von .ejs speichern.
Ziemlich hilfreich bei der Arbeit mit IDEs, die HTML unterstützen, aber keine EJS erkennen.
versuchen Sie dies für Ihre Server-Konfiguration
app.configure(function() {
app.use(express.static(__dirname + '/public')); // set the static files location
app.use(express.logger('dev')); // log every request to the console
app.use(express.bodyParser()); // pull information from html in POST
app.use(express.methodOverride()); // simulate DELETE and PUT
app.use(express.favicon(__dirname + '/public/img/favicon.ico'));
});
ihre Callback-Funktionen für Routen werden dann wie folgt aussehen:
function(req, res) {
res.sendfile('./public/index.html');
};
Es ist keine View Engine erforderlich, wenn Sie angle mit einer einfachen einfachen HTML-Datei verwenden möchten. So gehen Sie vor: In Ihrer route.js
-Datei:
router.get('/', (req, res) => {
res.sendFile('index.html', {
root: 'yourPathToIndexDirectory'
});
});
Die Antwort ist sehr einfach. Sie müssen app.engine ('html') zum Rendern von * .html-Seiten verwenden.
app.set('views', path.join(__dirname, 'views'));
**// Set EJS View Engine**
app.set('view engine','ejs');
**// Set HTML engine**
app.engine('html', require('ejs').renderFile);
die .html-Datei funktioniert
HTML-Dateien können mit der EJS Engine gerendert werden:
app.set('view engine', 'ejs');
Stellen Sie sicher, dass Ihre Dateien unter "/ views" den Namen ".ejs" tragen.
Zum Beispiel "index.ejs".
Um zu erreichen, dass das Rendermodul HTML anstelle von Jade akzeptiert, können Sie die folgenden Schritte ausführen:
Install consolidate and swig to your directory.
npm install consolidate
npm install swig
add following lines to your app.js file
var cons = require('consolidate');
// view engine setup
app.engine('html', cons.swig)
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');
add your view templates as .html inside “views” folder. Restart you node server and start the app in the browser.
Das sollte funktionieren
Kommentieren Sie die Middleware für HTML aus, d. H.
//app.set('view engine', 'html');
Verwenden Sie stattdessen:
app.get("/",(req,res)=>{
res.sendFile("index.html");
});
html ist keine View-Engine, aber ejs bietet die Möglichkeit, darin HTML-Code zu schreiben
Ich empfehle die Verwendung von https://www.npmjs.com/package/express-es6-template-engine - eine extrem leichte und extrem schnelle Template-Engine. Der Name ist etwas irreführend, da er auch ohne expressjs funktionieren kann.
Die für die Integration von express-es6-template-engine
in Ihre App erforderlichen Grundlagen sind ziemlich einfach und recht einfach zu implementieren:
const express = require('express'),
es6Renderer = require('express-es6-template-engine'),
app = express();
app.engine('html', es6Renderer);
app.set('views', 'views');
app.set('view engine', 'html');
app.get('/', function(req, res) {
res.render('index', {locals: {title: 'Welcome!'}});
});
app.listen(3000);
index.html
-Datei in Ihrem 'views'-Verzeichnis: <!DOCTYPE html>
<html>
<body>
<h1>${title}</h1>
</body>
</html>
Probieren Sie diese einfache Lösung aus, sie hat für mich funktioniert
app.get('/', function(req, res){
res.render('index.ehtml')
});
um Server-HTML-Seiten durch Routing zu Server, habe ich dies getan.
var hbs = require('express-hbs');
app.engine('hbs', hbs.express4({
partialsDir: __dirname + '/views/partials'
}));
app.set('views', __dirname + '/views');
app.set('view engine', 'hbs');
und meine .html-Dateien in .hbs-Dateien umbenannt - Lenker unterstützen einfaches HTML