是否有Node.js即用工具(与npm一起安装),可以帮助我通过HTTP将文件夹内容作为文件服务器公开。
例如,如果我有
D:\Folder\file.zip
D:\Folder\file2.html
D:\Folder\folder\file-in-folder.jpg
然后从D:\Folder\node node-file-server.js开始我可以通过
http://hostname/file.zip
http://hostname/file2.html
http://hostname/folder/file-in-folder.jpg
为什么我的节点静态文件服务器丢弃请求?参考一些神秘的
标准node.js静态文件服务器
如果没有这样的工具,我应该使用什么框架?
相关:NodeJS中的基本静态文件服务器
以下内容对我有用:
创建包含以下内容的文件app.js:
// app.js
var fs = require('fs'),
http = require('http');
http.createServer(function (req, res) {
fs.readFile(__dirname + req.url, function (err,data) {
if (err) {
res.writeHead(404);
res.end(JSON.stringify(err));
return;
}
res.writeHead(200);
res.end(data);
});
}).listen(8080);
创建包含以下内容的文件index.html:
Hi
启动命令行:
cmd
在cmd中运行以下命令:
node app.js
转到下面的URL,以chrome显示:
http://localhost:8080/index.html
这就是全部。希望这会有所帮助。
资料来源:https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/
为了使用节点服务静态资源来健康地提高性能,我建议使用Buffet。它的工作方式类似于web应用程序加速器,也称为缓存HTTP反向代理,但它只是将所选目录加载到内存中。
Buffet采用了一种完全缓冲的方法——当您的应用程序启动时,所有文件都会完全加载到内存中,因此您永远不会感觉到文件系统被烧毁。实际上,这是非常有效的。如此之多,以至于将Varnish放在应用程序前面甚至可能会使其变慢!
我们在codePile网站上使用它,发现在1k并发用户连接负载下下载25个资源的页面上,请求数增加了约700个/秒,达到超过4k个/秒。
例子:
var server = require('http').createServer();
var buffet = require('buffet')(root: './file');
server.on('request', function (req, res) {
buffet(req, res, function () {
buffet.notFound(req, res);
});
});
server.listen(3000, function () {
console.log('test server running on port 3000');
});
使用npm安装express:https://expressjs.com/en/starter/installing.html
在index.html的同一级别创建一个名为server.js的文件,内容如下:
var express = require('express');
var server = express();
server.use(express.static(__dirname));
server.listen(8080);
这将加载index.html文件。如果希望指定要加载的html文件,请使用以下语法:
server.use('/', express.static(__dirname + '/myfile.html'));
如果要将其放置在其他位置,请在第三行设置路径:
server.use('/', express.static(__dirname + '/public'));
CD到包含文件的文件夹,然后使用以下命令从控制台运行节点:
node server.js
浏览到localhost:8080