middleware serve-favicon

middleware de Node.js para servir un favicon.

Un favicon es una pista visual que el software cliente, como los navegadores, usa para identificar un sitio. Para un ejemplo y más información, visita el artículo de Wikipedia sobre favicons.

¿Por qué usar este módulo?

  • Los user agents solicitan favicon.ico frecuentemente y de forma indiscriminada, así que puedes querer excluir estas peticiones de tus logs usando este middleware antes de tu middleware de logger.
  • Este módulo almacena el icono en memoria para mejorar el rendimiento evitando el acceso al disco.
  • Este módulo proporciona un ETag basado en el contenido del icono, en lugar de las propiedades del sistema de archivos.
  • Este módulo servirá con el Content-Type más compatible.

Nota Este módulo es exclusivamente para servir el “favicon implícito por defecto”, que es GET /favicon.ico. Para iconos adicionales específicos de cada proveedor que requieren marcado HTML, se necesita middleware adicional para servir los archivos relevantes, por ejemplo serve-static.

Instalar

Este es un módulo de Node.js disponible a través del registro npm. La instalación se hace usando el comando npm install:

Ventana de terminal
npm install serve-favicon

API

favicon(path, options)

Crea un nuevo middleware para servir un favicon desde el path dado a un archivo favicon. path también puede ser un Buffer del icono a servir.

Opciones

serve-favicon acepta estas propiedades en el objeto options.

maxAge

La directiva cache-control max-age en ms, por defecto 1 año. Esto también puede ser una cadena aceptada por el módulo ms.

Ejemplos

Típicamente este middleware irá muy al principio en tu stack (quizás incluso primero) para evitar procesar cualquier otro middleware si ya sabemos que la petición es para /favicon.ico.

express

var express = require('express');
var favicon = require('serve-favicon');
var path = require('path');
var app = express();
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
// Add your routes here, etc.
app.listen(3000);

connect

var connect = require('connect');
var favicon = require('serve-favicon');
var path = require('path');
var app = connect();
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
// Add your middleware here, etc.
app.listen(3000);

servidor http vanilla

Este middleware puede usarse en cualquier lugar, incluso fuera de express/connect. Toma req, res, y callback.

var http = require('http');
var favicon = require('serve-favicon');
var finalhandler = require('finalhandler');
var path = require('path');
var _favicon = favicon(path.join(__dirname, 'public', 'favicon.ico'));
var server = http.createServer(function onRequest(req, res) {
var done = finalhandler(req, res);
_favicon(req, res, function onNext(err) {
if (err) return done(err);
// continue to process the request here, etc.
res.statusCode = 404;
res.end('oops');
});
});
server.listen(3000);

Licencia

MIT