Express'i Node.JS ile kullanırken Jade'den nasıl kurtulurum? Ben sadece düz html kullanmak istiyorum. Diğer makalelerde, insanların artık en son sürümde kullanımdan kaldırılan app.register () uygulamasını önerdiklerini gördüm.
Express'i Node.JS ile kullanırken Jade'den nasıl kurtulurum? Ben sadece düz html kullanmak istiyorum. Diğer makalelerde, insanların artık en son sürümde kullanımdan kaldırılan app.register () uygulamasını önerdiklerini gördüm.
Yanıtlar:
Bunu şu şekilde yapabilirsiniz:
Ejs yükleyin:
npm install ejs
Şablon motorunuzu app.js'de ejs olarak ayarlayın
// app.js
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
Artık rota dosyanızda şablon değişkenleri atayabilirsiniz
// ./routes/index.js
exports.index = function(req, res){
res.render('index', { title: 'ejs' });};
Daha sonra / views dizininde html görünümünüzü oluşturabilirsiniz.
title
html dosyasında nasıl yazdırılır ?
Jade ayrıca html girdisini de kabul eder.
Saf html göndermeye başlamak için satırın sonuna bir nokta eklemeniz yeterlidir.
Bu sizin için hile yaparsa, deneyin:
doctype html
html. // THAT DOT
<body>
<div>Hello, yes this is dog</div>
</body>
Not - HTML'yi kapatmaya gerek yok - bu Jade tarafından otomatik olarak yapılır.
response.sendFile
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});)
Gönderen resmi ekspres api referans :
res.sendfile(path, [options], [fn]])
Dosyayı verilen yoldan aktarın.
Dosya adının uzantısına göre Content-Type yanıt başlık alanını otomatik olarak varsayılan hale getirir. Geri arama
fn(err)
, aktarım tamamlandığında veya bir hata oluştuğunda çağrılır.
res.sendFile
http önbellek başlıkları aracılığıyla istemci tarafı önbellek sağlar, ancak sunucu tarafındaki dosya içeriklerini önbelleğe almaz. Yukarıdaki kod, her istekte diske vuracaktır .
sendfile
sadece bir dosyadan bayt gönderdiği için herhangi bir şablonlama yapmanıza izin vermez. Dahası, sendfile
bu şekilde kullanmamanızı tavsiye ederim çünkü bu, her istek geldiğinde diske vuracağınız anlamına gelir - büyük bir darboğaz. Yüksek trafikli sayfalar için gerçekten bellek içi önbelleğe alma yapmalısınız.
Bana göre, sadece html dosyalarını okumak için ejs kadar büyük bir şey kullanmak biraz zor. Html dosyaları için oldukça basit olan kendi şablon motorumu yazdım. Dosya şuna benzer:
var fs = require('fs');
module.exports = function(path, options, fn){
var cacheLocation = path + ':html';
if(typeof module.exports.cache[cacheLocation] === "string"){
return fn(null, module.exports.cache[cacheLocation]);
}
fs.readFile(path, 'utf8', function(err, data){
if(err) { return fn(err); }
return fn(null, module.exports.cache[cacheLocation] = data);
});
}
module.exports.cache = {};
Mine htmlEngine'i aradım ve onu kullanma şekliniz sadece şunu söylemektir:
app.engine('html', require('./htmlEngine'));
app.set('view engine', 'html');
app.register()
amortismana tabi tutulmamıştır, app.engine()
Express 3 şablon motorlarının işlenme şeklini değiştirdiğinden beri olarak yeniden adlandırılmıştır .
Express 2.x şablon motoru uyumluluğu, aşağıdaki modül dışa aktarımını gerektirdi:
exports.compile = function(templateString, options) { return a Function; };
Express 3.x şablon motorları aşağıdakileri dışa aktarmalıdır:
exports.__express = function(filename, options, callback) { callback(err, string); };
Bir şablon motoru bu yöntemi açığa çıkarmazsa, şansınız kalmaz,
app.engine()
yöntem herhangi bir işlevi bir uzantıya eşlemenize izin verir. Bir markdown kitaplığınız olduğunu ve .md dosyalarını işlemek istediğinizi, ancak bu kitaplık Express'i desteklemediğini varsayalım,app.engine()
aramanız aşağıdaki gibi görünebilir:var markdown = require('some-markdown-library'); var fs = require('fs'); app.engine('md', function(path, options, fn){ fs.readFile(path, 'utf8', function(err, str){ if (err) return fn(err); str = markdown.parse(str).toString(); fn(null, str); }); });
'Düz' HTML kullanmanıza izin veren bir şablon oluşturma motoru arıyorsanız , son derece hızlı olduğu için doT'yi tavsiye ederim. .
Elbette, Express 3 görünüm modelinin görünümü önbelleğe almayı size (veya şablon oluşturma motorunuza) bıraktığını unutmayın. Bir üretim ortamında, muhtemelen her istek üzerine disk G / Ç yapmamak için görünümlerinizi bellekte önbelleğe almak istersiniz.
EJS'yi hangi şablonların HTML olduğunu ancak değişkenleri desteklediğini ifade ile kullanabilirsiniz. İşte EJS'nin ekspres olarak nasıl kullanılacağına dair iyi bir öğretici.
http://robdodson.me/blog/2012/05/31/how-to-use-ejs-in-express/
Render motorunun jade yerine html'yi kabul etmesini sağlamak için aşağıdaki adımları takip edebilirsiniz;
Konsolide et ve dizininize swig yükleyin .
npm install consolidate
npm install swig
app.js dosyanıza aşağıdaki satırları ekleyin
var cons = require('consolidate');
// view engine setup
app.engine('html', cons.swig)
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', ‘html');
görünüm şablonlarınızı .html olarak "görünümler" klasörüne ekleyin. Düğüm sunucunuzu yeniden başlatın ve uygulamayı tarayıcıda başlatın.
Bu html'yi sorunsuz hale getirecek olsa da, JADE'i öğrenerek kullanmanızı tavsiye ederim. Jade harika bir şablon motorudur ve bunu öğrenmek, daha iyi tasarım ve ölçeklenebilirlik elde etmenize yardımcı olacaktır.
önce aşağıdaki satırı kullanarak şablon motorunun uyumluluk sürümünü kontrol edin
express -h
o zaman listeden hiçbir görünüm kullanmamalısınız. görünüm yok seç
express --no-view myapp
artık tüm html, css, js ve görsellerinizi ortak klasörde kullanabilirsiniz.
Görünüşe göre statik dosyalar sunmak istiyorsun. Ve bunun için bir sayfa var http://expressjs.com/en/starter/static-files.html
Kimsenin belgelerle bağlantı kurmaması tuhaf.
Rotalarınızı zaten tanımladığınızı veya nasıl yapılacağını bildiğinizi düşünürsek.
app.get('*', function(req, res){
res.sendfile('path/to/your/html/file.html');
});
NOT: * her şeyi kabul ettiği için bu rota diğerlerinin hepsinden sonra yerleştirilmelidir.
Jade HTML'yi desteklediğinden, sadece .html uzantısına sahip olmak istiyorsanız, bunu yapabilirsiniz
// app.js
app.engine('html', require('jade').renderFile);
app.set('view engine', 'html');
o zaman sadece görünümlerdeki dosyayı jade'den html'ye değiştirirsiniz.
Ayrıca html dosyanızı doğrudan jade dosyanıza da ekleyebilirsiniz.
include ../../public/index.html
Orijinal cevap: Yeşimsiz Ekspres Jeneratör
Jade kullanmadan nodeJS'de düz html kullanmak istiyorsanız .. veya her neyse:
var html = '<div>'
+ 'hello'
+ '</div>';
Şahsen ben bununla iyiyim.
Avantaj, kontrol sırasında basitliktir. '<p>' + (name || '') + '</p>'
Üçlü .. vb. Gibi bazı numaralar kullanabilirsiniz .
Tarayıcıda girintili bir kod istiyorsanız şunları yapabilirsiniz:
+ 'ok \
my friend \
sldkfjlsdkjf';
ve istediğinizde \ t veya \ n kullanın. Ama olmadan tercih ederim, artı daha hızlı.