Express에서 멋진 형식의 HTML을 출력하려면 어떻게해야합니까?


165

Express for Node.js를 사용할 때 줄 바꿈 문자 나 탭없이 HTML 코드를 출력한다는 것을 알았습니다. 다운로드하는 것이 더 효율적일 수 있지만 개발 중에는 읽기가 쉽지 않습니다.

Express에서 멋진 형식의 HTML을 출력하려면 어떻게해야합니까?

답변:


313

당신의 메인 app.js또는 그 장소에있는 것 :

익스프레스 4.x

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

Express 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 다음과 같은 이유로이를 변경 했습니다.

"view options"설정은 더 이상 필요하지 않으며 app.locals는 res.render ()와 병합 된 로컬 변수이므로 [app.locals.pretty = true는 res.render (view, {pretty : 진실 }).


1
올바른 답변이므로 지금까지 허용 된 답변을 변경하십시오.
Val

이 일을,하지만 난 여분의 의존성, 즉의 무리 설치했다 promise, uglify-js, css그리고 lexical-scope(첫 번째 요청에 구축,하지만 충돌)이 다시 실행됩니다 전에합니다. 한 줄만 추가했습니다.
CWSpear

2
Express 4.x에서 어떻게합니까?
안토니오

3
@AntonioSalvati 시도app.locals.pretty = true
Huei Tan

1
이것은 내가 찾던 정확한 답변입니다. 다른 버전의 Express에서이 작업이 수행되는 방식을보고 새로 고칩니다. 다른 문제를 검색했으며 Express의 버전이 언급되지 않은 답변을 찾았습니다.
SnowInferno

50

Jade / Express에서 html 출력을 "pretty-format"하려면 :

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

3
훌륭한 솔루션! 레이아웃 / 페이지 사이의 들여 쓰기 수준과 일치하기를 바랍니다.
Stephen

34
시대에 뒤쳐진. Express 3은 약간 다르게 작동합니다. EhevuTov가 작성한 게시물을 참조하십시오.

7

express 4.x에서 이것을 app.js에 추가하십시오.

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

여기서 일했습니다-감사합니다! 제 경우에는 'env'var 세트가 없었습니다. 이 한 줄로 기본 .js 파일에 추가 할 수 있습니다. process.env.NODE_ENV = 'development';
Gene Bo

다른 답변이 이미이 솔루션을 제공하는 경우 왜이 답변을 제공합니까?
nbro

나는이 답변을 가장 먼저 받았으며 다른 답변은 나중에 업데이트되었습니다.
alarive

6

Jade 자체에는 "pretty"옵션이 있습니다.

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을 디버깅 할 수있는 능력-괜찮습니다.


3
HTML 디버깅이 전부라면 Webkit 또는 Firebug 인스펙터를 사용하여 항상 HTML을 '검사'할 수 있습니다. 그것은 항상 완벽한 형식의 DOM 트리를 생성합니다.
Roshambo

@Roshambo 사실이지만, 소스를 더 빨리 스캔 할 수있을 때 (때로는) 트리를 탐색하는 데 시간이 오래 걸립니다.
Val

4

콘솔을 사용하여 컴파일하는 경우 다음과 같은 것을 사용할 수 있습니다.

$ jade views/ --out html --pretty

0

멋진 형식의 HTML이 정말로 필요합니까? 한 편집기에서 멋지게 보이는 것을 출력하려고해도 다른 편집기에서는 이상하게 보일 수 있습니다. 물론 html이 필요한지 모르겠지만 Firefox 용 Chrome 개발 도구 또는 Firebug를 사용해 보려고합니다. 이러한 도구를 사용하면 HTML 대신 DOM을 잘 볼 수 있습니다.

정말 멋진 형식의 html이 필요한 경우 jade 대신 EJS를 사용해보십시오. 그것은 당신이 HTML을 직접 포맷해야한다는 것을 의미합니다.


나는 잠시 동안 함께 작업했기 때문에 ejs를 더 좋아합니다. 나는 어떤 것들에 대해 매우 특별한 것 같아요.
Stephen

0

깔끔하게 사용할 수 있습니다

이 옥 파일을 예로 들어 보겠습니다.

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

이제 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

<!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

그런 다음 tidy -m output.html 을 사용 하여 깔끔하게 실행하면 다음과 같은 결과가 발생합니다.

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

올리버의 제안을 바탕으로 아름답게 HTML을 보는 빠르고 더러운 방법

1) 깔끔한 다운로드

2) 이것을 .bashrc에 추가하십시오.

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

3) 달리다

$ tidyme localhost:3000/path

open 명령은 mac에서만 작동합니다. 그것이 도움이되기를 바랍니다!


들여 쓰기 옵션에 대해 몰랐습니다 ... 좋은! vim의 내장 포맷터를 사용하고있었습니다.
oliver

0

express 4.x에서 이것을 app.js에 추가하십시오.

app.locals.pretty = app.get('env') === 'development';
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.