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
中的许多模块都是针对节点的,因此它们不必在浏览器中工作。许多模块将包括一个浏览器构建或某种形式,因此它们将在任何地方工作