1

我有“小部件”,其中包括客户端和服务器.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/')

我该怎么做?

4

1 回答 1

0

关于问题一,node 没有内置的方法来使用 globbing 搜索这样的文件系统。如果您的应用程序目录中有非小部件的东西,您将需要手动过滤掉它们,或者您可以使用类似很棒的node-findit包。

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

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

widgetDirs.forEach(function(widgetDir) {
    app.use(widgetDir, express.static(__dirname + '/app/' + widgetDir + '/client/'));
});
于 2013-01-08T14:21:04.433 回答