0

我有以下简单的 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>

我已经对路径名和服务/安装进行了一些试验,但我仍然不太了解这条客户端线路是如何工作的。这个问题的答案是说通过监听server,io处理所有传入的 Socket.IO 请求。

...

我的问题是:这可以为其他客户端 JS 文件完成吗?

例如,是否有一些简单的方法来捆绑 JQuery 以便可以以相同的方式处理它?目前我可以将文件放在一个文件夹中public并使用 Express'app.use()方法,这样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>
4

2 回答 2

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

于 2013-05-18T18:52:04.727 回答
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();
}

在翡翠布局中使用它是一样的。如果我对您的理解正确,那将是包含这些脚本的一种方法。不过,就我个人而言,我宁愿静态地包含它们。

于 2013-05-18T19:18:40.510 回答