有什么区别,我应该使用哪种?我的目标是简单地提供静态html页面和文件。
router.get('/', function(req, res) {
res.sendFile(path.resolve(public + '/index.html'))
})
或
$counter= 0;
$result= $cid->query("SELECT ComName FROM catcom");
echo $count=$result->num_rows;
while ($row= $result->fetch_assoc()) {
$field_value[] = $row;
$counter++;
}
答案 0 :(得分:11)
静态中间件和sendFile()大致相同 - 它们都将文件流传输到响应流。
区别在于express.static将:
sendFile会:
他们都会:
使用静态中间件的主要优点是您不需要单独为每个文件编写特定路由(或清理参数),而只需将中间件指向正确的目录。
答案 1 :(得分:4)
如果要提供public
目录中的任何文件,则应使用express.static
中间件来提供安装到应用程序根目录的整个目录。
(另外,您可能希望考虑将静态服务中间件作为项目的依赖项包含在serve-static
中,以便它可以独立于Express进行更新。)
var serveStatic = require('serve-static'); // same as express.static
/* ... app initialization stuff goes here ... */
router.use(serveStatic(public)); // assuming you've defined `public` to some path above
这将通过发送文件来响应文件请求,读取index.html
文件以响应目录根目录的请求。
但是,如果你的路线中有某种复杂的逻辑(或者你可能在将来某个时候),那么你应该使用sendFile
。例如,对于每分钟发送不同图标的服务器:
router.get('/favicon.ico', function(req, res) {
return res.sendFile(path.resolve(public, '/icons/' + new Date().getMinutes() + '.ico'));
})