【问题标题】:NodeJS + SocketIO client side scriptNodeJS + SocketIO 客户端脚本
【发布时间】:2016-08-23 08:52:32
【问题描述】:

所以我使用以下命令安装了socket.io

npm install --save socket.io

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

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

除了我所有的socket.io 东西都在我的服务器上的node_modules 中,从我的观点来看是无法访问的,他们将public 文件夹作为他们的根目录。如何在我的客户端中加载socket.io

对于过去的其他事情,我决定在public/js 文件夹中简单地复制粘贴,但每次我用npm 安装前端东西时我都不愿意这样做。我已经在网上阅读了诸如BowerBrowserify 之类的内容,但是我很困惑,所以我决定来这里寻求一个直接的答案。

【问题讨论】:

    标签: node.js socket.io npm


    【解决方案1】:

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

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

    Bower 是一个独立于npm 的包管理器,它所做的只是将模块安装到特定文件夹中,它所服务的模块应该准备好使用脚本标签包含在客户端上,没有限制尽管如此,与使用npm相比,它没有提供任何功能或优势,您仍然必须在某个目录中包含脚本,如果它被称为vendornode_modules有什么关系?

    使用npm 获得的优势是更大的模块集,而更大的模块集带来了更大的质量模块集。但是,npm 上的模块应该遵守 node 的模块系统,这基本上是 commonJS,同样对此没有限制,npm 可以并且将托管任何具有有效package.json 文件的东西。

    Browserify 之类的工具将模块系统转换为可以在浏览器中运行的格式,这就是它们所做的一切。

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

    【讨论】:

      【解决方案2】:

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

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

      它应该像一个魅力:)

      【讨论】:

        猜你喜欢
        • 2018-06-18
        • 1970-01-01
        • 2018-08-23
        • 2021-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-27
        • 1970-01-01
        相关资源
        最近更新 更多