Express'in güzel biçimlendirilmiş HTML çıktısı almasını nasıl sağlayabilirim?


165

Node.js için Express kullanırken, HTML kodunu herhangi bir yeni satır karakteri veya sekme olmadan çıkardığını fark ettim. İndirmek daha etkili olsa da, geliştirme sırasında çok okunabilir değil.

Express'in güzel biçimlendirilmiş HTML çıktısı almasını nasıl sağlayabilirim?

Yanıtlar:


313

Ana bölgenizde app.jsveya yerinde ne var:

Hızlı 4.x

if (app.get('env') === 'development') {
  app.locals.pretty = true;
}

Hızlı 3.x

app.configure('development', function(){
  app.use(express.errorHandler());
  app.locals.pretty = true;
});

Hızlı 2.x

app.configure('development', function(){
  app.use(express.errorHandler());
  app.set('view options', { pretty: true });
});

Güzel baskıyı koydum developmentçünkü 'çirkin' ile daha fazla verimlilik isteyeceksiniz production. NODE_ENV=productionÜretimde dağıtım yaparken ortam değişkenini ayarladığınızdan emin olun . Bu işlem sh, 'komut dosyası' alanında kullandığınız bir komut dosyasıyla yapılabilir package.jsonve başlamak için yürütülür.

Express 3 bunu değiştirdi çünkü:

"Görünüm seçenekleri" ayarı artık gerekli değildir, app.locals res.render () ile birleştirilen yerel değişkenlerdir, bu nedenle [app.locals.pretty = true, res.render (view, {pretty, : doğru }).


1
Lütfen kabul edilen cevabı, bugüne kadar verilen doğru cevap olduğu için değiştirin.
Val

Bu çalıştı, ama ekstra bağımlılıkları, yani bir demet yüklemek zorunda promise, uglify-js, cssve lexical-scope(ilk istek üzerine bu kuracağına, ama kilitlenme) tekrar aday olacağını daha önce. Sadece bir satır ekledim.
CWSpear

2
Express 4.x'te nasıl yapılır?
Antonio Salvati

3
@AntonioSalvati denemekapp.locals.pretty = true
Huei Tan

1
Bu harika bir cevap, tam olarak aradığım şey. Bunun Express'in farklı sürümleri için nasıl yapıldığını görmek canlandırıcı. Diğer sorunları araştırdım ve Express'in hangi sürümü için bahsetmediği cevaplar buldum.
SnowInferno

50

Jade / Express'te html çıktısını "güzel biçimlendirmek" için:

app.set('view options', { pretty: true });

3
Harika bir çözüm! Ben de düzeni / sayfa arasındaki girinti düzeyleri eşleşmesini isterdim.
Stephen

34
Demode. Express 3 biraz farklı çalışıyor, bkz. EhevuTov tarafından yazılmış yazı.

7

Express 4.x'te bunu app.js'nize ekleyin:

if (app.get('env') === 'development') {
  app.locals.pretty = true;
}

Burada çalıştım - teşekkürler! Benim durumumda 'env' var seti yoktu. Bunu tek bir satırla ana .js dosyasına ekleyebilirsiniz: process.env.NODE_ENV = 'development';
Gene Bo

Diğer yanıtlar zaten bu çözümü veriyorsa neden bu yanıtı veriyorsunuz?
nbro

Bu cevabı ilk ben verdim, diğer cevap daha sonra güncellendi.
alarive

6

Jade'in kendisinde "güzel" bir seçenek var:

var jade = require("jade");

var jade_string = [
    "!!! 5",
    "html",
    "    body",
    "        #foo  I am a foo div!"
].join("\n");

var fn = jade.compile(jade_string, { pretty: true });
console.log( fn() );

... sana bunu getirir:

<!DOCTYPE html>
<html>
  <body>
    <div id="foo">I am a foo div!
    </div>
  </body>
</html>

Çok sofistike görünmüyorum ama ne olduğum için - görünümlerimin ürettiği HTML'de hata ayıklama yeteneği - gayet iyi.


3
HTML'de hata ayıklama yapmakta olduğunuz tek şey buysa, Webkit veya Firebug denetçisini kullanarak HTML'yi her zaman 'inceleyebilirsiniz'. Bu her zaman mükemmel biçimlendirilmiş bir DOM ağacı oluşturur.
Roshambo

@Roshambo true, ancak ağaçta gezinmek zaman alıcıdır, u sadece kaynağı daha hızlı tarayabilir (bazen)
Val

4

Derlemek için konsolu kullanıyorsanız, bunun gibi bir şey kullanabilirsiniz:

$ jade views/ --out html --pretty

0

Gerçekten güzel biçimlendirilmiş html'ye ihtiyacınız var mı? Bir editörde hoş görünen bir şey çıkarmaya çalışsanız bile, başka bir editörde garip görünebilir. Verilmiş, html için neye ihtiyacınız olduğunu bilmiyorum, ancak Firefox için krom geliştirme araçlarını veya firebug'u kullanmayı deneyeceğim. Bu araçlar, html yerine DOM'yi iyi bir şekilde görüntülemenizi sağlar.

Gerçekten güzel biçimlendirilmiş html gerekiyorsa, yeşim yerine EJS kullanmayı deneyin. Bu, html'yi kendiniz biçimlendirmeniz gerektiği anlamına gelir.


Bir süredir onunla çalıştığım için ejs'i daha çok seviyorum. Sanırım bazı şeyler konusunda çok titizim.
Stephen

0

düzenli kullanabilirsin

örneğin bu yeşim dosyasını alın:

foo.jade

h1 MyTitle

p
  a(class='button', href='/users/') show users

table
  thead
    tr
      th Name
      th Email
  tbody
    - var items = [{name:'Foo',email:'foo@bar'}, {name:'Bar',email:'bar@bar'}]
    - each item in items
      tr
        td= item.name
        td= item.email

şimdi testjade.js düğümü ile işleyebilirsiniz foo.jade> output.html :

testjade.js

var jade = require('jade');
var jadeFile = process.argv[2];
jade.renderFile(__dirname + '/' + jadeFile, options, function(err, html){
    console.log(html);
});

sana bir şey verecek sevmek:

output.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>My Title</title><link rel="stylesheet" href="https://stackoverflow.com/stylesheets/style.css"/><script type="text/javascript" src="../js/jquery-1.4.4.min.js"></script></head><body><div id="main"><div ><h1>MyTitle</h1><p><a href="/users/" class="button">show users</a></p><table><thead><tr><th>Name</th><th>Email</th></tr></thead><tbody><tr><td>Foo</td><td>foo@bar</td></tr><tr><td>Bar</td><td>bar@bar</td></tr></tbody></table></div></div></body></html

daha sonra tidy -m output.html ile düzenli olarak çalıştırmak şöyle sonuçlanır:

output.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org" />
<title>My Title</title>
<link rel="stylesheet" href="/stylesheets/style.css" type=
"text/css" />
<script type="text/javascript" src="../js/jquery-1.4.4.min.js">
</script>
</head>
<body>
<div id="main">
<div>
<h1>MyTitle</h1>
<p><a href="/users/" class="button">show users</a></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>Foo</td>
<td>foo@bar</td>
</tr>
<tr>
<td>Bar</td>
<td>bar@bar</td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>

0

oliver'ın önerisi, heres güzelleştirilmiş html görüntülemek için hızlı ve kirli bir yol

1) düzenli indirin

2) bunu .bashrc'nize ekleyin

function tidyme() {
curl $1 | tidy -indent -quiet -output tidy.html ; open -a 'google chrome' tidy.html
}

3) koş

$ tidyme localhost:3000/path

open komutu yalnızca mac bilgisayarlarda çalışır. umarım yardımcı olur!


girinti seçeneği hakkında bilmiyordum ... güzel! Formerde yerleşik vim kullanıyordum.
oliver

0

Express 4.x'te bunu app.js'nize ekleyin:

app.locals.pretty = app.get('env') === 'development';
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.