Javascript 如何在浏览器中使用npm安装的requireJS

Javascript 如何在浏览器中使用npm安装的requireJS,javascript,npm,requirejs,Javascript,Npm,Requirejs,当requirejs能够使用时,如果它本身是通过npm install requirejs安装的,我首先应该如何使用requirejs 我已经阅读了中列出的使用requirejs的示例。它们似乎都假设require.js下载到特定位置。因为他特别说, 不要执行类似require(“./node\u modules/foo/foo”)的操作 我想输入index.html这样的内容是不对的: <html> <head> <script data-

requirejs
能够使用时,如果它本身是通过
npm install requirejs
安装的,我首先应该如何使用
requirejs

我已经阅读了中列出的使用
requirejs
的示例。它们似乎都假设
require.js
下载到特定位置。因为他特别说,

不要执行类似require(“./node\u modules/foo/foo”)的操作

我想输入
index.html
这样的内容是不对的:

<html>
    <head>
        <script data-main="scripts" src="node_modules/requirejs/require.js"></script>
    </head>
    <body>
        <h1>Hello World</h1>
    </body>
</html>

你好,世界

如果安装了npm,推荐使用requirejs的方法是什么?如果我在文档中遗漏了什么,请告诉我。谢谢你

看来你把RequireJS的一系列不同用法混为一谈了:

  • 如何使用通过浏览器中的节点安装的RequireJS

    您可以使用
    npm install requirejs
    安装它,然后您的HTML文件有一个
    script
    元素,该元素指向
    node\u modules/requirejs/require.js
    。正如您在代码片段中所显示的那样。就这些。话虽如此,我不喜欢在我部署的东西中有
    node\u模块
    ,所以我通常在别处有我的构建过程副本
    require.js

  • 如何在节点中加载带有RequireJS的npm安装模块

    假设没有RequireJS,您将通过执行
    require('foo')
    加载模块
    foo
    。您可以安装RequireJS并将其作为
    RequireJS
    加载。如何使用RequireJS加载
    foo
    ?您只需执行
    requirejs('foo')
    。只要RequireJS没有通过自己的配置找到它,作为最后手段,它将发出对节点自己的
    require
    的调用,并以这种方式加载它?这是一个例子。使用
    npm安装RequireJS
    安装RequireJS。创建此文件:

    var requirejs = require("requirejs");
    
    var fs = requirejs("fs");
    console.log(fs);
    
    然后运行它。您将进入console节点的
    fs
    模块

  • 如何在浏览器中加载带有RequireJS的npm安装模块

    这取决于模块。RequireJS不包含能够神奇地使npm安装的模块在浏览器中工作的代码。这最终取决于模块的结构。有些情况:

    A.一些npm安装的模块可以加载RequireJS,无需修改。我编写了一个库,通过npm分发,但它是AMD模块的集合。在浏览器中用RequireJS加载它们是很简单的

    B.它可能需要包装在
    define
    调用中。我最近在我的一个项目中加载了<代码>合并选项是一个常见的JS模块。它不支持现成的RequireJS,但是如果您使用
    define
    调用将其包装起来,它就会工作

    C.在将其加载到浏览器之前,可能需要更复杂的内容。例如,如果一个模块依赖于节点的
    fs
    模块,则必须为在浏览器中运行的
    fs
    提供一个替换。它可能会向您的代码提供一个假的文件系统


  • 关于你的第一点,这就是
    r.js
    存在的原因吗?
    r.js
    的存在主要是为了将一组模块优化为一个包。它还可以用来包装CommonJS习惯用法中带有
    define
    调用的模块,但我没有使用它。(Gulp项目建议
    Gulp wrap amd
    ,我就是这么用的。)在您的案例A中,“在浏览器中用RequireJS加载它们是很简单的”:请举个例子好吗?显然,我无法获得
    require(['reconnecting-websocket'],函数(foo){})开始工作。