javascript - Hvordan sette tilpasset favicon i Express?
Jeg begynte nylig å jobbe med Node.js, og i app.js-filen er det denne linjen:
app.use(express.favicon());
Nå, hvordan setter jeg opp min egen tilpassede favicon.ico?
Svar #1
I Express 4
Installer favicon-mellomvaren og gjør deretter:
var favicon = require('serve-favicon');
app.use(favicon(__dirname + '/public/images/favicon.ico'));
Eller bedre, ved å bruke path-modulen:
app.use(favicon(path.join(__dirname,'public','images','favicon.ico')));
(merk at denne løsningen også vil fungere i Express 3-apper)
I Express 3
Ifølge API-en aksepterer .favicon en stedparameter:
app.use(express.favicon("public/images/favicon.ico"));
Som oftest vil du kanskje ha dette (som vsync foreslo):
app.use(express.favicon(__dirname + '/public/images/favicon.ico'));
Eller enda bedre, bruk path-modulen (som Druska foreslo):
app.use(express.favicon(path.join(__dirname, 'public','images','favicon.ico')));
Hvorfor favicon er bedre enn static
I følge pakningsbeskrivelsen:
- Denne modulen cacher ikonet i minnet for å forbedre ytelsen ved å hoppe over disktilgang.
- Denne modulen gir en
ETagbasert på innholdet i ikonet, i stedet for filsystemegenskaper. - Denne modulen vil fungere med den mest kompatible
Content-Type.
Svar #2
Ingen ekstra mellomvare kreves. Bare bruk:
app.use('/favicon.ico', express.static('images/favicon.ico'));
Svar #3
Trenger ikke tilpasset middleware?! I Express:
//you probably have something like this already
app.use("/public", express.static('public'));
Deretter plasserer du faviconen din i public og legger til følgende linje i html-hodet ditt:
<link rel="icon" href="/public/favicon.ico">
Svar #4
smiley-favicon for å forhindre feil:
//const fs = require('fs');
//const favicon = fs.readFileSync(__dirname+'/public/favicon.ico'); // read file
const favicon = new Buffer.from('AAABAAEAEBAQAAAAAAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAA/4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEREQAAAAAAEAAAEAAAAAEAAAABAAAAEAAAAAAQAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAP//AAD8HwAA++8AAPf3AADv+wAA7/sAAP//AAD//wAA+98AAP//AAD//wAA//8AAP//AAD//wAA', 'base64');
app.get("/favicon.ico", function(req, res) {
res.statusCode = 200;
res.setHeader('Content-Length', favicon.length);
res.setHeader('Content-Type', 'image/x-icon');
res.setHeader("Cache-Control", "public, max-age=2592000"); // expiers after a month
res.setHeader("Expires", new Date(Date.now() + 2592000000).toUTCString());
res.end(favicon);
});
endre ikon i koden ovenfor
lag et ikon kanskje her: http://www.favicon.cc/ eller her: http://favicon-generator.org
konverter det til base64 kanskje her: http://base64converter.com/
erstatte deretter ikonets base 64-verdi
generell informasjon om hvordan lage et personlig favorittikon
Ikoner lages ved å bruke Photoshop eller Inkscape, kanskje Inkscape først og deretter Photoshop for vibrans og fargekorrigering (i bilde->justeringer-menyen).
for rask ikon gå til http://www.clker.com/ og velg noen vektor cliparts, og last ned som svg. ta det deretter med til Inkscape (https://inkscape.org/) og endre farger eller slett deler, kanskje legg til noe fra et annet vektor clipart-bilde, deretter for å eksportere velg delene som skal eksporteres og klikk fil>eksporter, velg størrelse som 16x16 for favicon eller 32x32. for videre redigering 128x128 eller 256x256. ico-pakken kan ha flere ikonstørrelser inne. den kan ha sammen med 16x16 piksel-favicon et høyoppløselig ikon for lenke til nettstedet.
så kanskje forbedre bildet i Photoshop. som vibrance, skråkant-effekt, rund maske, hva som helst.
last opp dette bildet til en av nettsidene som lager faviconer. Det finnes også programmer for Windows for å redigere ikoner, som https://sourceforge.net/projects/variicons/ .
å legge til favicon på nettstedet. Bare legg favicon.ico som en fil i rotmappen til domenet. For eksempel i Node.js i public-mappen som inneholder de statiske filene. Det trenger ikke å være noe spesielt som kode ovenfor, bare en enkel fil.