Node.js express中间件实现的动态样式表

Node.js express中间件实现的动态样式表,node.js,dynamic,express,middleware,stylesheet,Node.js,Dynamic,Express,Middleware,Stylesheet,我希望能够使用express中间件从路由内部动态地将样式表添加到全局样式表数组中 我提出了这个要点,但每次页面刷新都会继续将路由的样式表列表添加到数组的末尾。我怎样才能阻止它这样做 我认为此代码将解决您的问题: var express = require('express') , app = express.createServer() // Function to push formatted style // paths onto our stylesheet variable var

我希望能够使用express中间件从路由内部动态地将样式表添加到全局样式表数组中


我提出了这个要点,但每次页面刷新都会继续将路由的样式表列表添加到数组的末尾。我怎样才能阻止它这样做

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

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)

这是你的应用程序的完整代码吗?不,只是足以展示它应该如何工作的示例Thanx!通过创建一个带有工厂的模块,我实际上能够解决这个问题并添加更多功能。它在运行时只构建一次数组,而不是将样式推送到内嵌数组。与您在这里所做的相同,但现在我还可以动态添加javascript源代码和元标记:)