2012-08-16 5 views
1

작업 여러 템플릿을 Dustjs, Dustjs 여러 템플릿 500 가져 오는 동안 오류가 작동하지 않는 템플릿을는하지 expressjs에서

(template.dust) 아래로 내 기본 먼지 템플릿

<div class="page"> 
    {+pageHeader}Hello World!{/pageHeader} 
    <div class="bodyContent"> 
    {+bodyContent/} 
    </div> 
    <div class="footer"> 
    {+pageFooter} 
     <hr> 
     <a href="/contactUs">Contact Us</a> 
    {/pageFooter} 
    </div> 
</div> 

그리고 나는 아래와 같은 오류가 발생하고 내 home.dust 안쪽이 기본 템플릿을 호출하려고

Express 
500 Error: Template Not Found: template 
at Object.load (C:\office\nodejs-example\express_example\node_modules\application-name\node_modules\dust\lib\dust.js:54:27) 
at Chunk.partial (C:\office\nodejs-example\express_example\node_modules\application-name\node_modules\dust\lib\dust.js:407:15) 
at body_0 (undefined:1:130) 
at Array.0 (C:\office\nodejs-example\express_example\node_modules\application-name\node_modules\dust\lib\dust.js:34:7) 
at EventEmitter._tickCallback (node.js:192:40) 

"home.dust"

{>"template"/} 
{<pageHeader} 
    {?username} 
    Welcome {username} <a href="/items">Items</a> | <a href='/logout'> Log Out</a> 
     {:else} 
     <form method="POST" action="/signin"> 
      <label>Usename <input type="text" name="username" id="s-user"></label> 
      <input type="submit" class="submit" value="Login"> 
     </form> 
     {/username} 
{/pageHeader} 

루트 클래스 메서드

exports.home = function(req, res){ 
    res.render('home', {username : req.session.username}); 

}; 
+0

나는 여기 예를 든다. 나를 미치게한다. index.dust는 base.dust의 내용 블록을 덮어 쓰기로되어 있습니다 : https://github.com/chovy/express-template-demo/tree/master/demo/views – chovy

답변

0

사용 dustjs - 링크드 인 패키지의 저자. 둘 다 npm에 있습니다.

layout.dust

<body> 
    <h1>{title}</h1> 
{+content} 
This is the base content. 
{/content} 
    </body> 

index.dust (부분 홈페이지)

{>"views/layout.dust"/} 
{<content} 
This is loaded from a partial. 
{/content} 

var dust = require('dustjs-linkedin') 
, cons = require('consolidate'); 

app.engine('dust', cons.dust); 
을 app.js : 당신은 다음을 수행하여 레이아웃 먼지 템플릿을 사용할 수 있습니다

전체 예 : https://github.com/chovy/express-template-demo

1

당신은이 문제를 혼자하고이 문제가 나를 미치게했다! Express의 저자는 consolidate (Express에서 Dust를 사용하는 패키지)에 문제가 있음을 설명했습니다.

yeah there's an issue open in consolidate for this sort of thing,
these engines that do not provide
this mechanism are pretty clumsy right now

기준 : 익스프레스 (tjholowaychuk) (패키지가 더 이상 유지 dustjs) 패키지를 통합하지와 from google groupes

+0

이 [패키지] (https :// /npmjs.org/package/klei-dust) Express 3.x에서 잘 작동합니다. 이제 여러 템플릿과 함께 먼지를 사용할 수 있습니다. – appsunited

2

이 문제를 해결하기 위해 다음과 같이 썼습니다 :도우미로, 통합처럼 dustjs-linkedin을 3.x와 함께 사용하십시오. klei-dust와 consolidate.dust의 가장 큰 차이점은 이전에는 응용 프로그램 루트와 관련된 부분 및 기본 템플릿 경로가 필요하지 않으며 템플릿 파일 확장명을 지정하지 않아도된다는 것입니다.

귀하의 index.dust 다음과 같이 수 :

{>layout/} 
{<content} 
    Body content... 
{/content} 

것은 당신이 index.dust 같은 폴더에 layout.dust을 감안할 때.

관련 문제