公共资产的正则表达式路线

时间:2012-12-14 15:31:47

标签: javascript node.js coffeescript express

我有“小部件”,其中包括客户端和和服务器.coffee文件(将客户端视为Backbone.js模型/视图和服务器作为相关的ExpressJS路由),所有这些都在根项目下:

my-node-expressjs3-project/
  src/
    widget1/
      client/
        app.coffee
      server/
        routes.coffee
    widget2/
      client/
        app.coffee
      server/
        routes.coffee
  app/
    widget1/
      client/
        app.js 
      server/
        routes.js
    widget2/
      client/
        app.js 
      server/
        routes.js
  public/

所有.coffee个文件都编译为app/。我试图保持小部件的参考完整,只允许client/文件夹为“小部件”提供服务。问题1 - 我无法让它发挥作用。问题2 - 如果2个小部件包含相同的app.js文件,它们在我想解决问题的方式下会显得相同:

app.use express['static'](__dirname + '/public')
app.use express['static'](__dirname + '/app/*/client/')

我该怎么做?

1 个答案:

答案 0 :(得分:0)

关于问题一,节点没有内置的方法来使用globbing搜索这样的文件系统。如果你的app目录中有非烦琐的东西,你需要手动过滤掉它们,或者你可以使用像真棒node-findit包这样的东西。

关于问题二,一旦你有了小部件列表,你就可以在每个小部件的那个subUrl上安装静态中间件。 app.use函数采用可选的装载路径。

var widgetDirs = fs.readdirSync('app');

widgetDirs.forEach(function(widgetDir) {
    app.use(widgetDir, express.static(__dirname + '/app/' + widgetDir + '/client/'));
});