我有“小部件”,其中包括客户端和和服务器.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/')
我该怎么做?
答案 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/'));
});