Javascript 使用express将整个文件夹内容发送到客户端
我制作了一个html5游戏(使用GameMaker),它由index.html和一个文件夹“html5game”组成,其中包含游戏的依赖项—javascript代码和资源。问题是资源非常多且多样(声音、精灵等),客户需要它们全部播放 我正在寻找一种方式,发送他们所有没有具体命名他们 我尝试了glob模块:Javascript 使用express将整个文件夹内容发送到客户端,javascript,node.js,express,game-maker,Javascript,Node.js,Express,Game Maker,我制作了一个html5游戏(使用GameMaker),它由index.html和一个文件夹“html5game”组成,其中包含游戏的依赖项—javascript代码和资源。问题是资源非常多且多样(声音、精灵等),客户需要它们全部播放 我正在寻找一种方式,发送他们所有没有具体命名他们 我尝试了glob模块: var glob = require( 'glob' ); var files = glob.sync( './html5game/**' ).forEach( function(
var glob = require( 'glob' );
var files = glob.sync( './html5game/**' ).forEach( function( file ) {
require( path.resolve( file ) );
});
但一旦我这么做了,我就想不出用res.sendFile()发送文件的方法了
我试过了
var express = require('express');
var app = express();
[...]
app.get('/aeronavale/jeu', function(req, res){
res.sendFile(__dirname + '/aeronavale/index.html');
res.sendFile(files)
});
[...]
app.listen(3000, function(){
console.log('app started on port 3000, yeah !')
})
但它给了我一个错误:
TypeError: path argument is required to res.sendFile
如果你有其他的解决方案,我也很感兴趣。谢谢你的回答 您将无法使用
res.sendFile
发送多个这样的文件。在这里,您可以做的最简单的事情是:
将您的index.html
文件和html5game
目录放入一些公共目录,例如名为html
的目录,并将其放在您拥有Node.js程序的位置。目录布局示例如下:
/home/you/yourapp:
- app.js (your node program)
- package.json (your package.json etc)
- html (a new directory)
- index.html (your main html to serve)
- html5game (the directory with other files)
- (other files)
现在,在节点程序中,您可以使用如下内容:
var path = require('path');
var express = require('express');
var app = express();
var htmlPath = path.join(__dirname, 'html');
app.use(express.static(htmlPath));
var server = app.listen(3000, function () {
var host = 'localhost';
var port = server.address().port;
console.log('listening on http://'+host+':'+port+'/');
});
这将为您的所有文件(包括index.html
)提供如下地址:
- (您的
)index.html
- (你的资产)
index.html
文件中的资产,例如:
<script src="/html5game/xxx.js"></script>
为此:
app.use('/game', express.static(htmlPath));
然后,代替这些URL:
- (您的
)index.html
- (你的资产)
- (您的
)index.html
- (你的资产)
game1
、game2
等的html
目录。每个目录都有自己的index.html
和一个包含资产的子目录-这是最简单的,只需调用app.use(express.static(htmlPath))代码>-或者,您可以在每个游戏中调用一次:app.use('/game1',express.static(pathToGame1Files))代码>和app.use('/game2',express.static(pathToGame2Files))代码>哪个对您更方便。您甚至可以混合使用这两种方法,但注册路径的顺序很重要。非常感谢!如果你好奇的话,这里是我刚刚上传的游戏:使用箭头和X,我还没有制作教程:)(如果你在评论发布后阅读了这么长时间,请注意链接可能不会永远可用)@Aninternhasnoname这是一个非常酷的游戏!)这让我想起了一款很棒的DOS游戏《愤怒的翅膀》——只有你的游戏是类固醇,而且难度更大很酷。完成教程后,在twitter上给我发一条短信——我在twitter上。继续努力!我很高兴能帮上忙。
app.use('/game', express.static(htmlPath));