繁体   English   中英

使用Node JS服务的页面在客户端加载.js文件

[英]Loading .js files on client side with page served by Node JS

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

我已经做了一些路径名和服务/挂载的实验,但我仍然不太了解这个客户端线路是如何工作的。 这个问题的答案说,通过侦听serverio处理所有传入的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>

我不太确定要使用模块来托管特定文件,但仅在请求时托管文件会节省更多时间:

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

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();
}

在玉器布局中使用它会是相同的。 如果我理解正确,那将是包含这些脚本的一种方法。 我个人宁愿静态地包括它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM