是否有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中的基本静态文件服务器


当前回答

NPM上还没有,但我在Express上构建了一个简单的静态服务器,它还允许您接受表单提交,并通过事务电子邮件服务(现在是Sendgrid,Mandrill即将到来)发送电子邮件。

https://github.com/jdr0dn3y/nodejs-StatServe

其他回答

从…起npm@5.2.0,npm开始在通常的npm旁边安装一个新的二进制文件npx。现在,使用一行代码从当前目录创建静态http服务器:

npx serve

or

npx http-server

我在工作和个人项目中使用休斯顿,这对我来说很好。

https://github.com/alejandro/Houston

还有一个非常好的静态web服务器:浏览器同步。

可以使用节点包管理器下载:

npm install -g browser-sync

安装后,在cmd提示符下导航到项目文件夹,然后运行以下命令:

browser-sync start --server --port 3001 --files="./*"

它将开始处理浏览器中当前文件夹中的所有文件。

更多信息请访问BrowserSync

谢谢

为了使用节点服务静态资源来健康地提高性能,我建议使用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服务包来实现这一点,如果你不需要NodeJS的东西,它是一个快速易用的工具:

1-在电脑上安装软件包:

npm install -g serve

2-使用Serve<path>服务静态文件夹:

d:> serve d:\StaticSite

它将显示静态文件夹的服务端口,只需导航到主机,如下所示:

http://localhost:3000