Node.js를위한 템플릿 엔진이 있습니까? [닫은]


271

Node.js를 사용하여 전체 웹 응용 프로그램을 작성하는 실험을하고 있습니다. 최소한 기본 템플릿을 확장 할 수있는 Django 템플릿 엔진과 유사한 템플릿 엔진이 있습니까?


17
JavaScript V8 엔진이 Ruby, PHP 및 Python보다 빠릅니다. 역동적 인 언어에 대해 놀랍도록 빠릅니다. 그러나 Java 및 C #보다 느립니다.
Nosredna

77
@Nosredna : Java가 어떻게 다른 것보다 빠를 수 있습니까?! ;)
Daniel Sloof

27
@Daniel Java는 요즘 데비안의 Shootout 벤치 마크에서 Ada, C 및 C ++를 제외한 모든 것을 능가하면서 실제로 매우 빠릅니다.
Mentalikryst

20
구문, 생산성 및 성능 이외의 것을 신경 쓰지 않는 사람은 Raphters (C의 웹 프레임 워크)를 사용해야합니다
.

6
node.js는 언어에 관한 것이 아닙니다. 디자인과 js가 IO를 처리하는 방식에 관한 것입니다. IO 라이브러리를 다시 디자인하면 루비 웹 프레임 워크를 빠르게 실행할 수 있습니다.
julx

답변:



52

작동하지 않으면 mustache.js를 사용할 수 있어야하며 문제를 보내면 어쨌든 node.js에서 사용하려고하기 때문에 문제가 해결됩니다.

http://github.com/janl/mustache.js

CouchDB 독립형 앱이 Spidermonkey보기 서버에서 사용하기 때문에 DOM이 없으면 작동한다는 것을 알고 있습니다.


3
Node.js와 함께 Mustache 및 Underscore를 사용하는 방법에 대한 블로그 게시물도 있습니다. boldr.net/create-a-web-app-with-node
MKroehnert

링크가 깨진 @MKroehnert
huksay yukashima

40

haml을 좋아하지만 더 나은 것을 원한다면 http://jade-lang.com 에서 노드를 확인 하십시오. 나는 haml.js도 작성했습니다. :)


4
옥은 꽤 시원합니다. 방금 사용을 시작했기 때문에 성능에 대해 말할 수는 없지만 구문이 마음에 듭니다. Express의 기본 제공 지원은 플러스입니다.
broofa

3
성능은 충분하며 템플릿은 어쨌든 캐시되어야합니다. 또한 수직이 아닌 수평으로 확장해야 함을 기억하십시오. 그렇지 않으면 템플릿 엔진을 전혀 사용하지 않고 일부 기능 / 연결 만 사용할 수도 있습니다.
tjholowaychuk

14

항상 새로운 템플릿 엔진이 있습니다.

underscore.js는 js에 많은 기능적 프로그래밍 지원을 추가하고 템플릿이 있습니다.

그리고 오늘 나는 이것에 대해 들었습니다 : http://github.com/SamuraiJack/Shotenjin-Joosed


6
underscore.js에 대해 승인합니다. 멋진 라이브러리, 나는 그것을 클라이언트 측과 node.js 작업 모두에 사용합니다. 그들의 템플릿 엔진은 John Resig의 JS Micro Templating 엔진 ( ejohn.org/blog/javascript-micro-templating )을 기반으로 합니다. node.js로 작업 할 때이 시점에서 가장 좋은 옵션은 Afaik입니다.
Felix Geisendörfer

2
이러한 지원 중 하나가 상속을 지원합니까?
Nick Retallack

1
@Nick jinjs는 상속을 지원하는 것 같습니다. github.com/ravelsoft/node-jinjs/blob/master/test/templates/…
panchicore

13

node-asyncEJS를 살펴 보십시오node.js의 비동기 특성을 고려하도록 명시 적으로 설계된 . 템플릿 내부의 비동기 코드 블록도 허용합니다.

다음은 문서 양식의 예입니다.

<html>
  <head>
    <% ctx.hello = "World";  %>
    <title><%= "Hello " + ctx.hello %></title>
  </head>
  <body>

    <h1><%? setTimeout(function () { res.print("Async Header"); res.finish(); }, 2000)  %></h1>
    <p><%? setTimeout(function () { res.print("Body"); res.finish(); }, 1000)  %></p>

  </body>
</html>

7

당신은 수염 을 시도 할 수 있습니다 (용접 / 판에서 영감을 얻음).

예를 들면 다음과 같습니다.

{ post:
  { title: "Next generation templating: Start shaving!"
  , text: "TL;DR You should really check out beardless!"
  , comments:
    [ {text: "Hey cool!"}
    , {text: "Really gotta check that out..."}  ]
  }
}

템플릿 :

<h1 data-template="post.title"></h1>
<p data-template="post.text"></p>
<div>
  <div data-template="post.comments" class="comment">
    <p data-template="post.comments.text"></p>
  </div>
</div>

산출:

<h1>Next generation templating: Start shaving!</h1>
<p>TL;DR You should really check out beardless!</p>
<div>
  <div class="comment">
    <p>Hey cool!</p>
  </div>
  <div class="comment">
    <p>Really gotta check that out...</p>
  </div>
</div>

귀하의 코드 및 귀하가 참조한 링크에 대한 답변을보다 자세하게 설명하십시오. 참조 : 답변 방법
askmish

실제로 파일을 처리하거나 노드 내에서 변수를 채우는 방법
Julian F. Weinert


6

나는 Symfony와 함께 Twig를 사용하고 지금 node.js에서 손을 대고 있으므로 https://github.com/justjohn/twig.jshttps://github.com/paularmstrong/swig를 보고 있습니다. django를 사용하는 것 같습니다.


2
GitHub는 TwigJS가 죽었다고 말했다. 반면에 Swig는 꽤 적극적입니다. 나는 Swig에 갈 것입니다.
Darkhogg

참고 : 현재로 이 6 월 25 일 2015 년 커밋꿀꺽 꿀꺽 GitHub의 주장은 더 이상 유지되지되고있다 . 미래에는 변경 될 수 있지만 현재로서는 고려해야 할 사항입니다.
radiovisual

Nunjucks 의 가치는 매우 유사합니다.
mwcz

5

템플릿에 대한 미니멀리스트 접근법을 찾고 있다면 JSON 템플릿을 확인할 수 있습니다 .

보다 완전한 기능을 갖춘 대안은 EJS 입니다. 장고에서 얻는 것과 조금 더 비슷합니다.

마일리지는 각각에 따라 다를 수 있습니다-Node.js가 아니라 브라우저 Javascript 환경을 위해 설계되었습니다.


2
하나의 장고 템플릿에는 좋은 문서 가 있기 때문에 장고의 템플릿과 전혀 유사하지 않습니다 . EJS는 어려움을 겪고 있으며 소스 코드를 읽으면 사용할 수있는 것을 이해하게됩니다.

5

경고 : JinJ는 더 이상 유지되지 않습니다. 여전히 작동하지만 최신 버전의 express와 호환되지 않습니다.

jinjs를 사용해보십시오 . 매우 훌륭한 파이썬 템플릿 시스템 인 Jinja의 포트입니다. 다음과 같이 npm으로 설치할 수 있습니다.

npm install jinjs

template.tpl에서 :

I say : "{{ sentence }}"

template.js에서 :

jinjs = require('jinjs');
jinjs.registerExtension('.tpl');
tpl = require('./template');
str = tpl.render ({sentence : 'Hello, World!'});
console.log(str);

출력은 다음과 같습니다.

I say : "Hello, World!"

우리는 그것을 적극적으로 개발하고 있습니다.


4

haml은 node.js를위한 좋은 선택입니다

http://github.com/creationix/haml-js

haml-js

!!! XML
!!! strict
%html{ xmlns: "http://www.w3.org/1999/xhtml" }
  %head
    %title Sample haml template
  %body
    .profile
      .left.column
        #date= print_date()
        #address= current_user.address
      .right.column
        #email= current_user.email
        #bio= current_user.bio

html

<?xml version='1.0' encoding='utf-8' ?>
<!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><title>Sample haml template
</title></head><body><div class="profile"><div class="left column"><div id="date">January 1, 2009
</div><div id="address">Richardson, TX
</div></div><div class="right column"><div id="email">tim@creationix.com
</div><div id="bio">Experienced software professional...
</div></div></div></body></html>



3

Google의 클로저 템플릿은 기본적으로 자바 스크립트 템플릿 시스템이며 NodeJS와 자연스럽게 어울립니다. 다음은 이들을 통합하기위한 지침 입니다.


2

PURE 를 시도 했습니까 ?
당신이 그것을 시도한다면, 포럼 에서 직면 할 수있는 모든 문제를 자유롭게 게시하십시오

기본적으로 브라우저 용으로 설계되었지만 Jaxer 및 Rhino와 잘 작동합니다.

아직 node.js를 모르지만 일부 JS와 함수를 메모리에 캐시 할 수 있다면 속도가 훨씬 인상적입니다.


Node.js는 DOM을 이해하지 못합니다 ... PURE는 DOM을 사용하지만 문자열을 만들기 때문에 DOM을 사용하십시오. 이것은 조사하기에 흥미 롭습니다. 소음이 유감입니다.
Mic


2

Yajet 도 사용해보십시오 . ;-) 어제 방금 출시 한 새로운 제품이지만, 한동안 사용하고 있으며 안정적이며 빠릅니다 (템플릿은 기본 JS 함수로 컴파일 됨).

IMO는 템플릿 엔진에 가능한 최고의 구문과 작은 코드 크기 (8.5K 축소)에도 불구하고 풍부한 기능 세트를 갖추고 있습니다. 조건부 도입, 배열 / 해시 반복, 재사용 가능한 템플릿 구성 요소 정의 등을 허용하는 지시문이 있습니다.


재미 있고 일이 잘못되었습니다. EJS보다 장점이 있습니까?
trusktr

0

트위터 에서 hogan.js찾았고 그의 사이트에서 Tim O'Reilly가 추천했습니다. 모범 사례는 없지만 Twitter와 O'Reilly를 신뢰합니다. 당신은 시도해야합니다 ...




-1

DojoToolkit.org의 dojox.dtl을 사용할 수 있습니다. dojo 1.7은 NodeJS에서 잘 실행될 수 있으며 서버 측 라이브러리로 작동 할 수 있습니다. 관심이 있으시면 간단한 예를 들어 드리겠습니다.

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