webentwicklung-frage-antwort-db.com.de

Wie verwende ich HTML als Ansichtsmodul in Express?

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.

107
Julio

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'));
78
dankohn

Um zu erreichen, dass das Rendermodul HTML anstelle von Jade akzeptiert, können Sie die folgenden Schritte ausführen:

  1. Installieren Sie Consolidate und Swig in Ihrem Verzeichnis.

     npm install consolidate
     npm install swig
    
  2. 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');
    
  3. 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.

28
AnandShanbhag

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.

17
Sudhanshu Gupta

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');
};
14
Connor Leech

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'
   });
});
12
Ashish Rawat

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

4
Dinesh Kanivu

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".

3
JerryFZhang

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");
});
0
Shivam Chhetri

html ist keine View-Engine, aber ejs bietet die Möglichkeit, darin HTML-Code zu schreiben

0
Wael Chorfan

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);
Hier finden Sie den Inhalt der index.html-Datei in Ihrem 'views'-Verzeichnis:

<!DOCTYPE html>
<html>
<body>
    <h1>${title}</h1>
</body>
</html>
0
didinko

Probieren Sie diese einfache Lösung aus, sie hat für mich funktioniert

app.get('/', function(req, res){
    res.render('index.ehtml')
  });
0

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

0
Avinash