如何使用 npm 安装需要浏览器的 JS

How to use npm installed requireJS for browser

本文关键字:浏览器 JS 何使用 npm 安装      更新时间:2023-09-26

虽然requirejs能够使用 npm 安装的模块,但如果它通过 npm install requirejs 安装,我该如何使用requirejs

我已经阅读了使用示例部分中列出的requirejs的示例。他们似乎都假设require.js被下载到特定位置。由于文档特别说

不要做类似require("./node_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>

如果 requirejs 是 npm 安装的,推荐使用它的方法是什么?如果我错过了文档中的某些内容,请告诉我。谢谢

看起来你正在混淆RequireJS的一系列不同用途:

  1. 如何在浏览器中使用通过 Node 安装的 RequireJS?

    您可以使用 npm install requirejs 安装它,然后您的 HTML 文件有一个指向 node_modules/requirejs/require.jsscript 元素。与您在代码片段中显示的完全一样。仅此而已。话虽如此,我不喜欢在部署的内容中node_modules,所以我通常会将我的构建过程复制到其他地方require.js

  2. 如何在 Node 中使用 RequireJS 加载 npm 安装的模块?

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

    var requirejs = require("requirejs");
    var fs = requirejs("fs");
    console.log(fs);
    

    然后运行它。您将进入控制台节点的fs模块。

  3. 如何在浏览器中使用 RequireJS 加载 npm 安装的模块?

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

    一个。一些 npm 安装的模块可以加载 RequireJS,无需修改。我编写了一个库,它通过 npm 分发,但却是 AMD 模块的集合。在浏览器中使用 RequireJS 加载它们是微不足道的。

    二.它可能需要包装在define调用中。我最近在我的一个项目中加载了merge-options gulp-wrap-amd. merge-options是一个 CommonJS 模块。它不支持开箱即用的 RequireJS,但如果您用 define 调用包装它,它将起作用。

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