我有以下简单的JS文件,对于使用Socket.IO与NodeJS和Express框架的人来说,这看起来很熟悉:
var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
server.listen(8374);
// routing
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
在index.html
中,我有以下代码行:
<script src="/socket.io/socket.io.js"></script>
我已经做了一些路径名和服务/安装的实验,但我仍然不明白这个客户端线如何工作。 this question的答案是,通过监听server
,io
处理所有传入的Socket.IO请求。
...
我的问题是:这可以为其他客户端JS文件完成吗?
例如,是否有一些简单的方法来捆绑JQuery,以便可以以相同的方式处理它?目前我可以将文件放在public
这样的文件夹中,并使用Express app.use()
method,以便在index.html
中我可以包含此行:
<script src="/public/jquery-1.9.1.js"></script>
有没有办法像使用NodeJS一样管理JQuery作为依赖项?
我认为最终结果看起来像这样:
服务器端:
var jquery = require('jquery');
客户端:
<script src="jquery/jquery-1.9.1.js"></script>
答案 0 :(得分:0)
我不太确定使用模块来托管特定文件,但是在请求文件时托管文件会更加节省时间:
app.get("/", function (req, res) {
res.sendfile(__dirname + "/index.html");
});
app.get("/public/jquery-1.9.1.js", function (req, res) {
res.sendfile(__dirname + "/public/jquery-1.9.1.js");
});
我不使用Express,所以请原谅任何错误。
答案 1 :(得分:0)
在 express 2.x 中,许多人过去习惯使用“dynamicHelpers”。你的app.js中有类似的东西
app.dynamicHelpers({
scripts: function (){
return ['/js/jquery.min.js', '/js/jquery.ui.min.js']
}
})
在你使用玉的布局中你会这样做。
- each s in scripts
script(type='text/javascript', src= s)
现在已删除app.dynamicHelpers,因此在 express 3.x 中,您需要为此创建一个简单的模块,或者只是内联。在您的配置或特定环境中使用app.use(如果需要)。类似的东西。
app.use(function (req, res, next){
res.locals.scripts = ['/js/yourscript.js', '/js/yourotherscript.js']
next();
}
在玉石布局中使用它会是一样的。如果我正确地理解你,这将是包含这些脚本的一种方式。我个人宁愿把它们静态地包括在内。