Как я могу получить Express для вывода красиво отформатированного HTML?



при использовании Express для узла.js, я заметил, что он выводит HTML-код без каких-либо символов новой строки или вкладок. Хотя это может быть более эффективным для загрузки, это не очень читабельно во время разработки.



Как я могу получить экспресс для вывода красиво отформатированного HTML?

612   9  

9 ответов:

в основном app.js или то, что находится на его месте:

Экспресс-4.x

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

Экспресс-3.x

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

Экспресс-2.x

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

Я положил красивый отпечаток в development потому что вы хотите больше эффективности с "уродливым" в production. Обязательно установите переменную окружения NODE_ENV=production при развертывании в рабочей среде. Это можно сделать с помощью sh скрипт, который вы используете в 'script' поле package.json и выполняется для начала.

Экспресс-3 изменить вот так:

настройка "параметры просмотра" Больше не требуется, приложение.locals-это локальные переменные, объединенные с res.render (), поэтому [app.местный житель.довольно = истина такая же, как проезжают РЭС.визуализация(вид, { красавица: правда }).

для вывода html" pretty-format " в Jade / Express:

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

в самом нефрите есть" симпатичный " вариант:

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() );

...получает вам это:

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

Я не кажусь очень сложным, но для того, что я после -- возможность на самом деле отлаживать HTML мои представления производят-это просто прекрасно.

в экспресс 4.x, добавьте это в свое приложение.js:

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

Если вы используете консоль для компиляции, то можно использовать что-то вроде этого:

$ jade views/ --out html --pretty

вам действительно нужен красиво отформатированный html? Даже если вы пытаетесь вывести что-то, что выглядит хорошо в одном редакторе, это может выглядеть странно в другом. Конечно, я не знаю, для чего вам нужен html, но я бы попробовал использовать инструменты разработки chrome или firebug для Firefox. Эти инструменты дают вам хорошее представление о DOM вместо html.

Если вам действительно нужен хорошо отформатированный html, попробуйте использовать EJS вместо jade. Это означало бы, что вам придется отформатировать html самостоятельно хотя.

можно использовать порядок

возьмите, например, этот нефритовый файл:

фу.Джейд

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

теперь вы можете обрабатывать его с узел testjade.Джей фу.нефрит > выход.HTML-код:

testjade.js

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

даст вам s.th например:

выход.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="/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

затем запуск его через аккуратный с аккуратно -м выходе.HTML-код результатом будет:

выход.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>

отталкиваясь от предложения Оливера, вот быстрый и грязный способ просмотра украшенного html

1) Скачать порядок

2) добавить это к вашему .bashrc

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

3) run

$ tidyme localhost:3000/path

команда open работает только на компьютерах Mac. надеюсь, это поможет!

в экспресс 4.x, добавьте это в свое приложение.js:

app.locals.pretty = app.get('env') === 'development';

Comments

    Ничего не найдено.