1

我想在我的 express 应用程序中设置我的 CSS 路径,以便在我的翡翠布局中使用这个路径。但是,我不知道该怎么做,我尝试使用“app.set('cssPath', __dirname+'/public/admin/css/')”但它不起作用,因为我不能使用“app.set”。 get()" 在我的外部控制器中。

我的布局 _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')
4

1 回答 1

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'); });
于 2013-08-13T11:28:23.830 回答