Jak pozbyć się Jade podczas korzystania z Express z Node.JS? Chcę po prostu użyć zwykłego HTML. W innych artykułach widziałem, że ludzie polecali aplikację app.register (), która jest obecnie przestarzała w najnowszej wersji.
103
Możesz to zrobić w ten sposób:
Zainstaluj ejs:
npm install ejs
Ustaw silnik szablonów w app.js jako ejs
// app.js
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
Teraz w pliku trasy możesz przypisać zmienne szablonu
// ./routes/index.js
exports.index = function(req, res){
res.render('index', { title: 'ejs' });};
Następnie możesz utworzyć widok html w katalogu / views.
title
w pliku html?Jade akceptuje również dane wejściowe HTML.
Po prostu dodaj kropkę na końcu linii, aby rozpocząć przesyłanie czystego kodu HTML.
Jeśli to wystarczy, spróbuj:
PS - Nie ma potrzeby zamykania HTML - to robi automagicznie Jade.
źródło
Od Express 3 możesz po prostu użyć
response.sendFile
Z oficjalnego odniesienia do wyraźnego interfejsu API :
Ostrzeżenie
res.sendFile
udostępnia pamięć podręczną po stronie klienta za pośrednictwem nagłówków pamięci podręcznej http, ale nie buforuje zawartości plików po stronie serwera. Powyższy kod trafi na dysk przy każdym żądaniu .źródło
sendfile
nie pozwala na tworzenie szablonów, ponieważ wysyła tylko bajty z pliku. Ponadto odradzałbym używanie wsendfile
ten sposób, ponieważ oznacza to, że będziesz uderzać w dysk za każdym razem, gdy pojawi się żądanie - ogromne wąskie gardło. W przypadku stron o dużym natężeniu ruchu naprawdę należy wykonywać buforowanie w pamięci.Moim zdaniem używanie czegoś tak dużego jak ejs tylko do odczytu plików html jest nieco uciążliwe. Właśnie napisałem własny silnik szablonów dla plików html, który jest niezwykle prosty. Plik wygląda następująco:
Nazwałem mój htmlEngine, a sposób, w jaki go używasz, jest po prostu mówiąc:
źródło
app.register()
nie został zdeprecjonowany, po prostu zmieniono jego nazwę naapp.engine()
odkąd Express 3 zmienia sposób obsługi silników szablonów .Jeśli szukasz silnika do tworzenia szablonów, który pozwala używać „zwykłego” HTML-a, polecam doT, ponieważ jest niezwykle szybki .
Oczywiście pamiętaj, że model widoku Express 3 pozostawia buforowanie widoku Tobie (lub Twojemu silnikowi szablonów). W środowisku produkcyjnym prawdopodobnie chcesz buforować swoje widoki w pamięci, aby nie wykonywać operacji we / wy dysku przy każdym żądaniu.
źródło
Możesz używać EJS z wyrażeniami, które szablony są HTML, ale obsługują zmienne. Oto dobry samouczek dotyczący korzystania z EJS w trybie ekspresowym.
http://robdodson.me/blog/2012/05/31/how-to-use-ejs-in-express/
źródło
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.
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 renderowanie 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
najpierw sprawdź kompatybilność wersji silnika szablonów, używając poniższego wiersza
wtedy nie musisz używać żadnego widoku z listy. wybierz brak widoku
teraz możesz używać wszystkich swoich html, css, js i obrazów w folderze publicznym.
źródło
Cóż, wygląda na to, że chcesz obsługiwać pliki statyczne. Jest też taka strona http://expressjs.com/en/starter/static-files.html
Dziwne, że nikt nie łączy się z dokumentacją.
źródło
Biorąc pod uwagę, że masz już zdefiniowane trasy lub wiesz, jak to zrobić.
UWAGA: ta trasa musi być umieszczona po wszystkich innych, ponieważ * akceptuje wszystko.
źródło
ponieważ Jade obsługuje HTML, możesz to zrobić, jeśli chcesz mieć tylko rozszerzenie .html
następnie po prostu zmień plik w widokach z jade na html.
źródło
Możesz również bezpośrednio dołączyć plik html do pliku jade
Oryginalna odpowiedź: ekspresowy generator bez jadeitu
źródło
Jeśli chcesz używać zwykłego html w nodeJS, bez używania jade .. lub cokolwiek innego:
Osobiście dobrze sobie z tym radzę.
Zaletą jest prostota podczas sterowania. Możesz użyć kilku sztuczek, takich jak
'<p>' + (name || '') + '</p>'
trójskładnik ... itdJeśli chcesz mieć wcięty kod w przeglądarce, możesz zrobić:
i używaj \ t lub \ n do woli. Ale wolę bez, a do tego jest szybszy.
źródło
fs
modułu.fs.readFile(htmlfile, 'utf8', function (err, file) {