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

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

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

    В вашем основном приложении 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 который вы используете в поле сценария package.json и запускается для запуска.

    Express 3 изменил это, потому что:

    Параметры «Параметры просмотра» больше не нужны, app.locals – это локальные переменные, объединенные с res.render (), поэтому [app.locals.pretty = true совпадает с передачей res.render (view, {pretty : правда }).

    Для «довольно-форматированного» вывода html в 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() ); 

    … получает от вас следующее:

        
    I am a foo div!

    Я, кажется, не очень изощрен, но за то, что мне нужно, – способность фактически отлаживать HTML, который производит мои представления, – это просто отлично.

    В express 4.x добавьте это в свой app.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 самостоятельно.

    вы можете использовать аккуратно

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

    foo.jade

     h1 MyTitle p a(class='button', href='https://stackoverflow.com/users/') show users table thead tr th Name th Email tbody - var items = [{name:'Foo',email:'[email protected]'}, {name:'Bar',email:'[email protected]'}] - each item in items tr td= item.name td= item.email 

    теперь вы можете обработать его с помощью узла testjade.js 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); }); 

    даст вам s.th. как:

    output.html

     My Title 

    затем запустить его через аккуратный с tidy -m output.html приведет к:

    output.html

         My Title     

    MyTitle

    show users

    Name Email
    Foo [email protected]
    Bar [email protected]
    - My Title

    MyTitle

    show users

    Name Email
    Foo [email protected]
    Bar [email protected]

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

    1) скачать tidy

    2) добавьте это в свой .bashrc

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

    3) запустить

     $ tidyme localhost:3000/path 

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

    В express 4.x добавьте это в свой app.js:

     app.locals.pretty = app.get('env') === 'development'; 
    Давайте будем гением компьютера.