Wypróbowałem tę prostą zmianę z seeda i utworzyłem odpowiednie pliki .html (np. Index.html).
//app.set('view engine', 'jade');
app.set('view engine', 'html');
i ten plik pozostał ten sam:
exports.index = function(req, res){
res.render('index');
};
ale podczas biegu dostaję
Błąd 500: nie można znaleźć modułu „html”
Czy moja jedyna opcja to „ejs”? Moim zamiarem było użycie zwykłego HTML w połączeniu z AngularJS.
Odpowiedzi:
Odpowiedzi z drugiego linku będą działać, ale aby wyświetlić HTML, nie ma potrzeby używania silnika widoku, chyba że chcesz skonfigurować funky routing. Zamiast tego po prostu użyj statycznego oprogramowania pośredniczącego:
app.use(express.static(__dirname + '/public'));
źródło
res.render()
będzie już działać. Zamiast tego umieść surowe pliki HTMLpublic
i pozwól statycznemu oprogramowaniu pośredniczącemu bezpośrednio obsługiwać pliki. Jeśli potrzebujesz bardziej wyszukanych tras, prawdopodobnie możesz skonfigurować własny silnik widoku HTML.Aby silnik renderujący akceptował html zamiast jade, możesz wykonać następujące kroki;
Zainstaluj konsolidację i przenieś do swojego katalogu.
dodaj następujące wiersze do pliku app.js.
var cons = require('consolidate'); // view engine setup app.engine('html', cons.swig) app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'html');
dodaj szablony widoków jako .html do folderu „widoki”. Zrestartuj swój serwer węzłowy i uruchom aplikację w przeglądarce.
Chociaż spowoduje to bezproblemowe wyświetlanie html, polecam korzystanie z JADE, ucząc się go. Jade to niesamowity silnik szablonów, którego poznanie pomoże Ci osiągnąć lepszy projekt i skalowalność.
źródło
W swoim apps.js po prostu dodaj
// view engine setup app.set('views', path.join(__dirname, 'views')); app.engine('html', require('ejs').renderFile); app.set('view engine', 'html');
Teraz możesz używać silnika widoku ejs, zachowując pliki widoku jako .html
źródło: http://www.makebetterthings.com/node-js/how-to-use-html-with-express-node-js/
Musisz zainstalować te dwa pakiety:
`npm install ejs --save` `npm install path --save`
A następnie zaimportuj potrzebne pakiety:
`var path = require('path');`
W ten sposób możesz zapisać swoje widoki jako .html zamiast .ejs .
Bardzo pomocne podczas pracy z IDE, które obsługują html, ale nie rozpoznają ejs.
źródło
spróbuj tego dla swojej konfiguracji serwera
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')); });
wtedy twoje funkcje zwrotne do tras będą wyglądać następująco:
function(req, res) { res.sendfile('./public/index.html'); };
źródło
Żaden silnik widoku nie jest potrzebny, jeśli chcesz używać angulara z prostym zwykłym plikiem HTML. Oto jak to zrobić: w
route.js
pliku:router.get('/', (req, res) => { res.sendFile('index.html', { root: 'yourPathToIndexDirectory' }); });
źródło
Polecam korzystanie z https://www.npmjs.com/package/express-es6-template-engine - niezwykle lekkiego i niesamowicie szybkiego silnika szablonów. Nazwa jest nieco myląca, ponieważ może działać również bez wyrażeń expressj.
Podstawy wymagane do integracji
express-es6-template-engine
z Twoją aplikacją są dość proste i całkiem proste do wdrożenia: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
pliku zlokalizowanego w katalogu „widoki”:<!DOCTYPE html> <html> <body> <h1>${title}</h1> </body> </html>
źródło
Odpowiedź jest bardzo prosta. Aby renderować strony * .html, musisz użyć aplikacji app.engine („html”). spróbuj tego, to musi rozwiązać problem.
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);
plik .html będzie działać
źródło
Pliki HTML można renderować za pomocą silnika ejs:
app.set('view engine', 'ejs');
Upewnij się, że pliki w folderze „/ views” mają nazwy „.ejs”.
Na przykład „index.ejs”.
źródło
Skomentuj oprogramowanie pośredniczące dla html ie
//app.set('view engine', 'html');
Zamiast tego użyj:
app.get("/",(req,res)=>{ res.sendFile("index.html"); });
źródło
html nie jest silnikiem przeglądania, ale ejs oferuje możliwość pisania w nim kodu HTML
źródło
Zainstaluj szablon ejs
npm install ejs --save
Polecaj ejs w app.js
app.set('views', path.join(__dirname, 'views'));` app.set('view engine', 'ejs');
Utwórz szablon ejs w widokach, takich jak views / indes.ejs i użyj ejs tempalte na routerze
router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); });
źródło
do stron html serwera za pośrednictwem routingu, zrobiłem to.
var hbs = require('express-hbs'); app.engine('hbs', hbs.express4({ partialsDir: __dirname + '/views/partials' })); app.set('views', __dirname + '/views'); app.set('view engine', 'hbs');
i przemianowałem moje pliki .html na .hbs - kierownice obsługują zwykły HTML
źródło
Aby silnik renderujący akceptował html zamiast jade, możesz wykonać następujące kroki;
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.
To powinno działać
źródło
Wypróbuj to proste rozwiązanie, zadziałało
app.get('/', function(req, res){ res.render('index.html') });
źródło
Renderuj szablon html za pomocą swig.
//require module swig var swig = require('swig'); // view engine setup app.set('views', path.join(__dirname, 'views')); app.engine('html', swig.renderFile); app.set('view engine', 'html');
źródło
Pliki HTML nie muszą być renderowane.
mechanizm renderujący zamienia plik, który nie jest plikiem HTML, w plik HTML.
aby wysłać plik HTML, po prostu wykonaj:
res.sendFile("index.html");
być może będziesz musiał użyć,
__dirname+"/index.html"
więc express będzie znać dokładną ścieżkę.źródło