虽然requirejs
能够使用npm-installed modules,但如果通过requirejs
安装了npm install requirejs
,我该如何首先使用requirejs
?
我已阅读使用example-section中列出的require.js
的示例。他们似乎都认为index.html
已下载到特定位置。由于documentation具体说
不要做需要的事情(“./ node_modules / foo / foo”)。
我想把<html>
<head>
<script data-main="scripts" src="node_modules/requirejs/require.js"></script>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
这样的东西放进去是不对的:
major
如果是npm-installed,建议使用requirejs的方法是什么?如果我遗漏了文档中的内容,请告诉我。谢谢
答案 0 :(得分:15)
看起来你正在混淆RequireJS的一系列不同用途:
如何在浏览器中使用通过Node安装的RequireJS?
您只需使用npm install requirejs
安装它,然后您的HTML文件就会有script
元素指向node_modules/requirejs/require.js
。正如您在代码段中显示的那样。这就是它的全部内容。这就是说,我不想在我部署的内容中使用node_modules
,因此我通常会将构建过程副本require.js
复制到其他位置。
如何在Node中加载带有RequireJS的npm安装模块?
假设没有RequireJS,您可以通过foo
加载模块require('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
模块。
如何在浏览器中加载带有RequireJS的npm安装模块?
这取决于模块。 RequireJS不包含将神奇地使npm安装的模块在浏览器中工作的代码。它最终取决于模块的结构。有些情况:
一个。一些npm安装的模块可以使用RequireJS加载而无需修改。我创作的一个库是通过npm分发的,但却是AMD模块的集合。在浏览器中使用RequireJS加载它们是微不足道的。
B中。它可能需要包含define
次调用。我最近在merge-options
的一个项目中加载了gulp-wrap-amd
。 merge-options
是一个CommonJS模块。它不支持RequireJS开箱即用,但如果你用define
调用它来包装它,它将起作用。
℃。在将其加载到浏览器中之前,可能需要更复杂的东西。例如,如果模块依赖于Node的fs
模块,那么您必须提供在浏览器中运行的fs
的替代品。它可能会为您的代码提供一个虚假的文件系统。