Javascript 包括AMD等超级药剂
我对Javascript中导入文件的多种方式(脚本标记、RequireJS、组件——如果是包含文件的另一种方式)有点困惑。在我的项目中,我将AMD与RequireJS一起使用。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');
现在,我想使用图书馆。
我没有加载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) {
}
);