2013-05-18 62 views
0

我有以下简单的JS文件,这将很熟悉谁在使用Socket.IO与和的NodeJS快递框架的人:加载.js文件在客户端文件与节点JS提供的页面

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的答案表示通过收听serverio可处理所有传入的Socket.IO请求。

...

我的问题是:可这对其他客户端的JS文件来完成?

例如,是否有一些简单的方法来捆绑JQuery,以便可以用相同的方式处理它?此刻,我可以把该文件夹中像public和使用快车app.use() method,使在index.html我可以加入这一行:

<script src="/public/jquery-1.9.1.js"></script> 

有管理的JQuery作为一个依赖,我们可以用的NodeJS方式?

我想的最终结果会是这个样子:

服务器端:

var jquery = require('jquery'); 

客户端:

<script src="jquery/jquery-1.9.1.js"></script> 
+0

不,node.js将使用纯JavaScript,但您可以将其包含在客户端索引中。html页面。 –

回答

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,所以请原谅任何错误。

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已删除,因此在快递3.X你要么需要创建一个简单的模块,或者只是做内联。在您的配置或特定环境中使用app.use,如果需要的话。就像是。

app.use(function (req, res, next){ 
    res.locals.scripts = ['/js/yourscript.js', '/js/yourotherscript.js'] 
    next(); 
} 

在玉石布局中使用它将是相同的。如果我正确地理解你,那将是包含这些脚本的一种方式。就个人而言,我宁愿将它们包括在内。