Node.js NodeJS+;SocketIO客户端脚本

Node.js NodeJS+;SocketIO客户端脚本,node.js,socket.io,npm,Node.js,Socket.io,Npm,因此,我使用以下命令安装了socket.io: npm install --save socket.io 我已经正确设置了服务器,现在正在尝试设置客户端。为了让我的客户端使用socket.io库,我需要导入socket.io库。传统上,我会这样做: <script src="/path/to/socket.io.js"></script> 除了我的所有socket.io文件都位于我的服务器上的node\u模块中之外,我的视图无法访问这些模块,它们的根目录是publ

因此,我使用以下命令安装了
socket.io

npm install --save socket.io
我已经正确设置了服务器,现在正在尝试设置客户端。为了让我的客户端使用
socket.io
库,我需要导入
socket.io
库。传统上,我会这样做:

<script src="/path/to/socket.io.js"></script>

除了我的所有
socket.io
文件都位于我的服务器上的
node\u模块中之外,我的视图无法访问这些模块,它们的根目录是
public
文件夹。如何在客户端中加载
socket.io


对于过去的其他事情,我决定只在
public/js
文件夹中复制粘贴,但我不愿意每次使用
npm
安装前端东西时都这样做。我在网上读到了一些关于
Bower
Browserify
的东西,但由于困惑,我决定来这里要求一个直截了当的答案

Socket.IO为公共部分添加了自己的路由,您应该像这样使用它:

<script src="/socket.io/socket.io.js"></script>


它应该像一个符咒一样工作:)

Socket.IO为公共部分添加了自己的路径,您应该像这样使用它:

<script src="/socket.io/socket.io.js"></script>


它应该像一个魅力:)

您也可以从CDN加载,尽管这很难解决您在客户端上使用npm模块的一般问题

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.js"></script>

Bower
是一个独立于
npm
的软件包管理器,它所做的只是将模块安装到一个特定的文件夹中,它所服务的模块应该准备好使用脚本标记包含在客户机上,但这方面没有任何限制,并且它与使用
npm
相比没有任何功能和优势,您仍然需要包含某个目录中的脚本,如果它被称为
供应商
节点模块
,又有什么关系呢

使用
npm
的优势在于模块集要大得多,而模块集越大,质量越高的模块就越多。然而,
npm
上的模块需要遵守节点的模块系统,这基本上是commonJS,同样没有限制,
npm
可以并且将承载任何带有有效
package.json
文件的内容

Browserify
这样的工具将该模块系统转换为可以在浏览器中工作的格式,这就是它们所做的


如果您不愿意为前端使用构建系统,那么您必须求助于从node_模块加载,一个快速的符号链接到您的
public
文件夹就足够了(尽管您可能想更聪明一些)。但是,您必须完成额外的步骤,以确保您要使用的模块已准备好用于浏览器,
npm
中的许多模块都是针对
节点的,因此它们不必在浏览器中工作。许多模块将包含浏览器版本或某种类型,因此它们将在任何地方工作。

您也可以从CDN加载,尽管这很难解决在客户端上使用npm模块的一般问题

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.js"></script>

Bower
是一个独立于
npm
的软件包管理器,它所做的只是将模块安装到一个特定的文件夹中,它所服务的模块应该准备好使用脚本标记包含在客户机上,但这方面没有任何限制,并且它与使用
npm
相比没有任何功能和优势,您仍然需要包含某个目录中的脚本,如果它被称为
供应商
节点模块
,又有什么关系呢

使用
npm
的优势在于模块集要大得多,而模块集越大,质量越高的模块就越多。然而,
npm
上的模块需要遵守节点的模块系统,这基本上是commonJS,同样没有限制,
npm
可以并且将承载任何带有有效
package.json
文件的内容

Browserify
这样的工具将该模块系统转换为可以在浏览器中工作的格式,这就是它们所做的

如果您不愿意为前端使用构建系统,那么您必须求助于从node_模块加载,一个快速的符号链接到您的
public
文件夹就足够了(尽管您可能想更聪明一些)。但是,您必须完成额外的步骤,以确保您要使用的模块已准备好用于浏览器,
npm
中的许多模块都是针对
节点的,因此它们不必在浏览器中工作。许多模块将包括一个浏览器构建或某种形式,因此它们将在任何地方工作