Express中间件实现的动态样式表

发布于 2024-12-17 01:27:59 字数 195 浏览 0 评论 0原文

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

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

I would like to be able to dynamically add a stylesheet from inside my routes to a global stylesheet array using express middleware.

I have come up with this gist https://gist.github.com/1375882 but each page refresh just continues to add the route's stylesheet list to the end of the array. How can I keep it from doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只是一片海 2024-12-24 01:27:59

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

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)

I think this code will solve your problem:

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文