如何添加`jquery`来表达应用

How to add `jquery` to express app

我刚刚玩了一个 hello-world-chat express 应用程序 (here)。我注意到 index.html

中的以下内容
<script src="/socket.io/socket.io.js"></script>

我已经安装了

npm install --save socket.io

express怎么知道它在哪里,因为没有像

这样的文件
/node_modules/socket.io/socket.io.js

例如,我想对 jquery

做同样的事情
$> npm install --save jquery

<script src="/jquery/jquery.js"></script>

但是,这不起作用:(

谁能给我解释一下这是怎么回事?如果可能的话,我该如何解决 jquery.

当您安装服务器端 socket.io 库然后初始化 socket.io 服务器端时,您将您的 express 应用程序对象传递给它。然后它为 /socket.io/socket.io.js 路由安装路由处理程序,当请求该路由时,该处理程序从它自己的 socket.io 模块提供适当的客户端文件。客户端文件不在这个确切的路径中,甚至不一定有这个文件名,但是当命中该路由时,服务器端 socket.io 安装的路由将为客户端提供适当的文件 socket.io 支持

这样做有一个很好的好处,因为每次升级服务器端 socket.io 库时,您都会自动获得一个新的客户端库(嵌入在服务器端库中)这将始终保持两者同步。如果您提供单独的客户端库(来自 CDN 或您自己的路由),则必须确保同时升级客户端和服务器库。


如果您想从您的服务器提供 jQuery,那么您可以使用 express.static() 将 jQuery 文件放在您服务器上的已知位置并使用 express.static() 配置将特定路线指向正确的位置。 See Serving Static Files in Express 用于文档。

或者,如果您真的想像 socket.io 那样做,那么您可以为 /jquery/jquery.js 安装自己的路由,然后提供 jQuery 文件(来自无论你把它放在你的服务器上的什么地方)只要这条路线被击中。例如,这是一个自定义路由,用于提供特定版本的 jQuery 从使用您提到的命令 npm install --save jquery:

安装它的地方
app.get('/jquery/jquery.js', function(req, res) {
    res.sendfile(__dirname + '/node_modules/jquery/dist/jquery.min.js');
});