【问题标题】:Loading .js files on client side with page served by Node JS使用 Node JS 提供的页面在客户端加载 .js 文件
【发布时间】:2013-05-18 17:27:41
【问题描述】:

我有以下简单的 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 的答案是通过监听 serverio 处理所有传入的 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>

【问题讨论】:

  • 不,node.js 将使用纯 javascript,但您可以将其包含在您的客户端 index.html 页面中。

标签: javascript jquery node.js express socket.io


【解决方案1】:

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

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,如有错误请见谅。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-27
      • 2018-03-27
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 2021-02-20
      相关资源
      最近更新 更多