表达和连接资产管理者

时间:2012-08-13 16:30:37

标签: node.js express asset-management

我正在尝试使用connect-assetmanager和express。显然我不明白如何使基于连接的示例适应快速应用程序。

我使用了由快速命令行创建的框架应用程序(滚动到我运行的命令的底部)并尝试将其连接到connect-assetmanager主页中的示例。这是我的app.js:

var express = require('express')
  , routes = require('./routes')
  , assetManager = require('connect-assetmanager');

var assetManagerGroups = {
    'css': {
        'route': /\/static\/css\/[0-9]+\/.*\.css/
        , 'path': './public/stylesheets/'
        , 'dataType': 'css'
        , 'files': [ 'style.css', 'style2.css' ]
    }
};

var assetsManagerMiddleware = assetManager(assetManagerGroups);
var app = module.exports = express.createServer();

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(assetsManagerMiddleware); 
  app.use(express.static(__dirname + '/public'));
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.get('/', routes.index);

然后我修改了layout.jade,使其样式表引用指向资产管理器路径:/static/css/style.css

欢迎页面加载(减去任何样式),在chrome dev工具中,我看到上述css路径的请求失败。节点命令窗口中没有错误。我是否使用错误的方法连接资产管理器中间件来表达?或者像正确阅读示例正则表达式一样愚蠢?

作为参考,以下是我为创建示例应用程序而运行的内容:

# using 2.5 since that's what the larger app is based on
sudo npm install -g express@2.5.x

# create the sample express app
express expressAssetTest
cd expressAssetTest
# add connect-assetmanager to the dependencies
echo '{
    "name": "expressAssetTest"
  , "version": "0.0.1"
  , "private": true
  , "dependencies": {
      "express": "2.5.11"
    , "jade": ">= 0.0.1"
    , "connect-assetmanager": ">= 0.0.3"
  }
}' > package.json
# add a 2nd stylesheet for testing purposes
echo ".mycssclass { top: 0; }" > public/stylesheets/style2.css
sudo npm install

1 个答案:

答案 0 :(得分:4)

我的设置类似,尝试将connect-assetmanager与locomotive集成。我的javascript合并遇到了同样的问题。我通过从

更改路由正则表达式来实现它
'route': /\/static\/javascripts\/[0-9]+\/.*\.js/

'route': /\/static\/javascripts\/script\.js/

并从我的布局模板中调用/static/javascripts/script.js

我不确定为什么该示例具有特定的正则表达式,更合适的可能是这样的:

'route': /\/static\/javascripts\/[^/?*:;{}\\]+\.js/

基于此处的建议:Regex for finding valid filename