黑人生命也是命。
支持平等正義倡議.

serve-favicon

NPM Version NPM Downloads Linux Build Windows Build Test Coverage

用於提供 favicon 的 Node.js 中介軟體。

favicon 是視覺提示,例如瀏覽器等客戶端軟體用於識別網站。如需範例和更多資訊,請參閱 維基百科關於 favicon 的文章

為何使用此模組?

  • 使用者代理程式會頻繁且不加區別地要求 `favicon.ico`,因此你可能希望在記錄器中介軟體之前使用此中介軟體,從記錄中排除這些要求。
  • 此模組會快取圖示於記憶體中,藉由略過磁碟存取來提升效能。
  • 此模組會根據圖示內容提供 `ETag`,而非檔案系統屬性。
  • 此模組會使用最相容的 `Content-Type` 來提供服務。

注意 此模組專門用於提供服務給「預設、隱含的 favicon」,也就是 `GET /favicon.ico`。對於需要 HTML 標記的其他供應商特定圖示,需要額外的中介軟體來提供相關檔案,例如 serve-static

安裝

這是一個 Node.js 模組,可透過 npm 註冊 取得。安裝是使用 npm install 指令 進行。

$ npm install serve-favicon

API

favicon(path, options)

建立新的中介軟體,以從給定的 favicon 檔案 `path` 提供 favicon 服務。`path` 也可能是要提供的圖示的 `Buffer`。

選項

提供 favicon 服務會在選項物件中接受這些屬性。

maxAge

以 `ms` 為單位的 `cache-control` `max-age` 指令,預設為 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)

vanilla 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)

授權

MIT