Javascript 包括AMD等超级药剂

Javascript 包括AMD等超级药剂,javascript,requirejs,amd,superagent,Javascript,Requirejs,Amd,Superagent,我对Javascript中导入文件的多种方式(脚本标记、RequireJS、组件——如果是包含文件的另一种方式)有点困惑。在我的项目中,我将AMD与RequireJS一起使用。 现在,我想使用图书馆。 我没有加载superagent.js文件,并使用script标记将其包含在一些测试页面中。然后,我可以使用require函数(在superagent.js中定义),如果我写以下代码,我肯定可以访问superagent函数: var request = require('superagent');

我对Javascript中导入文件的多种方式(脚本标记、RequireJS、组件——如果是包含文件的另一种方式)有点困惑。在我的项目中,我将AMD与RequireJS一起使用。
现在,我想使用图书馆。
我没有加载superagent.js文件,并使用script标记将其包含在一些测试页面中。然后,我可以使用require函数(在superagent.js中定义),如果我写以下代码,我肯定可以访问superagent函数:

var request = require('superagent');
在我的JS文件中
在我基于RequireJS的项目中是否有使用Superagent库的方法?我希望仍然使用:

var request = require('superagent');
,但显然它不起作用。

您可以尝试以下方法:

require(["superagent"], function(superagent){
    console.log(superagent)
    // there your code 
})

最后,我找到了一种解决办法
我使用了该库的“组件”版本(即使我不知道什么是组件,所以在此意义上的任何帮助都是值得赞赏的),我将其封装在一个经典的define RequireJS中,没有显式使用require,因为参数传递给定义函数(我不需要require函数,因为它是在库中定义的)

我刚刚添加了第一行,并在库的最后一行之前返回(这只是require(“superagent”))
即使我对包含JS文件的多种方式仍然感到困惑,而且现在每次冒险都会包含JS库,这似乎是可行的…

这对我来说很有效: 创建一个require.config.js文件,称之为bootstrap.js,在其中为superagent选择一个简单的名称。它看起来像:

requirejs.config({
   map: {},
  paths: {
    'superagent': 'libs/superagent/superagent',
  },
  shim: {},
  packages: []
});

require(['js/main/main']);
在index.html中,指向require.js以启动srap.js e、 g

现在在您的模块中使用

define(
    ['superagent'],
    function(request) {
    }
);

我忘了告诉你我正在使用CommonJS语法([),我想使用它。不管怎样,我尝试了你的建议,但是superagent还没有定义…我看了代码,我不确定它是否可以在AMD env中使用,但我不是那么专家。你试着将这个库添加到“shim”中吗在Requirejs配置中?我没有尝试,因为该库再次定义了“require”函数,我使用该函数将其他AMD库包含在Requirejs中。我找到了另一个解决方案,如回答中所述。对我有效(我根据。您能否验证
superagent.js
资源是否已正确加载且没有404?superagent已准备就绪,因此如果路径正确,将自动拾取。您能否比“显然它不工作”更具体一些?我没有404,如果我在代码中设置了一些断点,我可以看到在require函数调用期间执行的一些代码。但是,如果我使用这行代码,请求是未定义的。你从哪里得到superagent.js的源代码?我是使用
component install visionmedia/superagent
命令并“编译”它的(我不知道关于编译的更多细节,因为我自己没有做过)。这应该可以澄清调用
require
的多种方法之间的区别。很抱歉,index.html文件中应该有一个脚本标记'data main=“bootstrap”src=“path to require.js”'
define(
    ['superagent'],
    function(request) {
    }
);