Recursos estáticos específicos del módulo Node.js

¿Existe una manera elegante de agrupar recursos de archivos del lado del cliente estático (scripts, imágenes, etc.) en un módulo Express y evitar sistemáticamente los conflictos de nombres? Es bastante fácil registrar una instancia específica del módulo del objeto estático así:

app.use(express.static(modulePath + '/public')); app.use(express.static(__dirname + '/public')); 

pero si ambos directorios contienen un archivo “styles.css”, parecería que el del módulo eclipsará al de la aplicación. Se podría usar un subdirectorio dentro del público del módulo para evitar este problema, pero lo que realmente quiero es una forma de asignar los recursos del módulo a una ruta arbitraria tal que

 http://localhost:3000/mymodule/styles.css => /public/styles.css http://localhost:3000/styles.css => /public/styles.css 

¿Ya hay una manera de hacer esto? Ya lo hice con trucos de encoding, así que realmente estoy buscando la forma recomendada de hacerlo. Además, si me falta algún concepto clave que lo hace totalmente innecesario, también me gustaría aprender sobre eso.

Puede crear otra instancia de connect.static y usarla dentro de una ruta:

 app = express.createServer() app.configure(function(){ app.use(express.static(__dirname+'/public')) }) // new static middleware var myModuleStatic = express.static(__dirname+'/mymodule') // catch all sub-directory requests app.get('/mymodule/*', function(req, res){ // remove subdir from url (static serves from root) req.url = req.url.replace(/^\/mymodule/, '') // call the actual middleware, catch pass-through (not found) myModuleStatic(req, res, function(){ res.send(404) }) }) app.listen(5555) 

Algo como esto también debería funcionar:

 app.use(express.static(__dirname + '/public')); app.use('/mymodule', express.static(modulePath + '/public')); 

Consulte: http://groups.google.com/group/express-js/browse_thread/thread/c653fafc35fa85ed

Intereting Posts