Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Express/Node.js中使用favicon中间件的优势是什么?_Javascript_Node.js_Express_Favicon - Fatal编程技术网

Javascript 在Express/Node.js中使用favicon中间件的优势是什么?

Javascript 在Express/Node.js中使用favicon中间件的优势是什么?,javascript,node.js,express,favicon,Javascript,Node.js,Express,Favicon,我想在我的网站上添加一个favicon(用带有Node.JS和Express的JavaScript编写)。internet上的资源指向使用favicon服务中间件。Express生成器还包括这个中间件 目前,我正在使用以下代码行提供静态文件 app.use(express.static('./public')); 因此,我将favicon.ico放在/public文件夹中,favicon可以正常工作(无需使用favicon服务中间件) 所以我的问题是:为什么要使用favicon中间件?为什么不

我想在我的网站上添加一个favicon(用带有Node.JS和Express的JavaScript编写)。internet上的资源指向使用favicon服务中间件。Express生成器还包括这个中间件

目前,我正在使用以下代码行提供静态文件

app.use(express.static('./public'));
因此,我将
favicon.ico
放在
/public
文件夹中,favicon可以正常工作(无需使用favicon服务中间件)

所以我的问题是:为什么要使用favicon中间件?为什么不把它和其他静态资源(.css/.png/…)放在一个公共文件夹中呢

编辑:我得到了一些反对票,如果这是一个太多的“RTM”问题,很抱歉,但是作为一个初学者(在JavaScript/Node.js中),很容易在外部模块中迷失方向。对于Node.js来说,很难找到不“安装此模块,学习使用此模块,完成”的资源。作为初学者,我经常想知道,即使您最终使用了该模块,如果没有其他外部模块,人们会如何解决问题。

答案如下:

  • 用户代理经常不加区别地请求favicon.ico,因此您可能希望通过使用此选项从日志中排除这些请求 中间件先于记录器中间件
  • 此模块将图标缓存在内存中,通过跳过磁盘访问来提高性能
  • 此模块根据图标的内容而不是文件系统属性提供ETag
  • 此模块将提供最兼容的内容类型

如果没有静态资源呢?favicon本身不是静态资源吗?如果功能在express中已经很短/很容易使用,为什么会有人使用中间件?
favicon本身不是静态资源吗?
-如果没有静态资源呢resources@JaromandaX我不明白你想说什么。我的观点是,当您在项目中没有静态资源,并且您正在添加favicon.ico时,favicon.ico将是您项目中的(第一个)静态资源。那么为什么不把它作为一个静态资源呢?对不起,我想也许使用
favicon中间件
意味着你不需要
app.use(express.static('./public')-因为(如果它是我知道的中间件)
app.use(favicon(path.join(u dirname,'public','favicon.ico'))。。。请参阅,无需使用
express.static
因此,简而言之,主要优势在于日志记录(更准确地说,不是日志记录)和缓存目的?此模块提高了应用程序性能(有一点),中间件按照声明的顺序运行,因此当您使用此模块并在
static
中间件之前声明它时,它将首先被调用并以现金形式返回favicon。