注意
本页内容由 serve-favicon README 生成。serve-favicon
用于提供 favicon 的 Node.js 中间件。
favicon 是一种视觉线索,客户端软件(如浏览器)用它来识别网站。如需示例和更多信息,请访问 维基百科关于 favicon 的文章。
为何使用此模块?
- 用户代理频繁且不加区分地请求
favicon.ico
,因此您可能希望在使用日志中间件之前使用此中间件,将这些请求从日志中排除。 - 此模块将图标缓存到内存中,以跳过磁盘访问来提高性能。
- 此模块根据图标内容(而非文件系统属性)提供
ETag
。 - 此模块将以最兼容的
Content-Type
提供服务。
注意 此模块专门用于提供“默认的隐式 favicon”,即 GET /favicon.ico
。对于需要 HTML 标记的额外供应商特定图标,需要额外的中间件来提供相关文件,例如 serve-static。
安装
这是一个通过 npm 注册表 提供的 Node.js 模块。使用 npm install
命令 进行安装。
$ npm install serve-favicon
API
favicon(path, options)
创建一个新的中间件,用于从给定的 favicon 文件 path
提供 favicon。 path
也可以是图标的 Buffer
。
选项
Serve favicon 在选项对象中接受以下属性。
maxAge
cache-control
max-age
指令,单位为 ms
,默认为 1 年。这也可以是 ms 模块接受的字符串。
示例
通常,此中间件会非常早地(甚至可能排在第一位)在您的栈中出现,以避免在已知请求是针对 /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)
原生 http 服务器
此中间件可以在任何地方使用,甚至在 express/connect 之外。它接受 req
、res
和 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)