动态样式表由快速中间件实现

时间:2011-11-18 08:46:46

标签: node.js dynamic express middleware stylesheet

我希望能够使用快速中间件动态地将路径内的样式表添加到全局样式表数组中。

我已经提出了这个要点https://gist.github.com/1375882,但每个页面刷新只会继续将路径的样式表列表添加到数组的末尾。我怎么能阻止它这样做呢?

1 个答案:

答案 0 :(得分:0)

我认为此代码可以解决您的问题:

var express = require('express')
  , app = express.createServer()

// Function to push formatted style
// paths onto our stylesheet variable
var addStyles = function(res, styles) {
  var temp = []
  styles.forEach(function(style){
    temp.push('/stylesheets/' + style + '.css')
  })
  temp = res.local('styles').concat(temp)
  res.local('styles', temp)
}

// Middleware that adds default styles
var buildStyles = function(default_styles){
  var styles = []
  // format our default style paths
  default_styles.forEach(function(style){
    styles.push('/stylesheets/' + style + '.css')
  })

  return function(req, res, next) {
    res.local('styles', styles)
    next()
  }
}

// Configure our middleware
app.configure(function(){
  app.use(express.static(__dirname + '/public'))
  app.set('views', __dirname + '/views')
  app.set('view engine', 'jade')
  // Call our custom middleware passing in
  // an array of global stylesheets to use
  app.use(buildStyles(['global']))
})

app.get('/',function(req, res){
  // Add forms.css and user/login.css stylesheet dynamically
  addStyles(res, ['forms','user/login'])
  res.json(res.local('styles'))
  //res.render('home')
})

app.listen(8080)