2013-08-13 4 views
1

제이드 레이아웃에서이 CSS 경로를 사용하려면 명시 적 애플리케이션에서 CSS 경로를 설정하고 싶습니다. 그러나 어떻게해야할지 모르겠다. "app.set ('cssPath', __dirname + '/ public/admin/css /')"하지만 "앱을 사용할 수 없어 작동하지 않습니다. 내 외부 컨트롤러에서 get() ". 옥 레이아웃 용 CSS 경로 설정

내 레이아웃 _layout.jade :

!!! 5 
html(lang='fr') 
    head 
    meta(charset='UTF-8') 
    link(href='admin/css/screen.css', media='screen, projection', rel='stylesheet', type='text/css') 
    body 
    .container 
     h1 Wellcome to Forest Administrator 
     .space20 
     block content 
     .clear.space20 
    script(type='text/javascript', src='admin/js/jquery.js') 

내 페이지 edit.jade :

extends ../_layout 

block content 
    .block.half.first 
    h2 Add a post 

그리고 나는 같은 것을 사용하고 싶습니다 : 경우

link(href='+myCssPath+', media='screen, projection', rel='stylesheet', type='text/css') 

답변

1

확실하지 않음을 나는 당신이하고 싶은 것을 얻습니다. 그러나 당신은 사용할 수 있습니다.

res.locals.cssPath = 'string with the path'; 

그리고 cssPath를 템플릿에서 사용할 수 있습니다.

게다가 __dirname + '/ public /이 필요하지 않습니다. 브라우저/public /에 대해 페이지를 렌더링 할 때/

[편집] 모든 경로에서 해당 변수를 사용할 수 있지만 한 번만 선언하려는 경우

과 같은 작은 미들웨어를 만들 수 있습니다
var express = require('express'); 
var app = express(); 
var app.configure(function(){ 

    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    // .. and your other tipical configuration 

    //this small middleware for variables that must available in all paths 
    app.use(function(req, res, next) { 
     res.locals.cssPath = 'path to the css directory'; 
     next(); 
    }); 
}); 
//From here your typical route declarations 
app.get('/', function(req, res) { res.render('someView'); }); 
+0

네 답에 잘 작동하지만 그게 최선의 해결책이라고 확신하지 못합니다. 어쨌든 작동합니다! 고맙습니다. – tonymx227

+1

그래, 편집을 보아라. 변수를 한 번만 선언하고 모든 경로에서 사용할 수 있다고 생각한다. 원하는대로 더 좋은 방법이라고 생각한다. – alfonsodev

+0

감사합니다! 그게 낫다 ! – tonymx227