考虑以下示例:
var ExampleFunction = function(param1, param2) {
this.helloWorld = function() {
console.log('hello world' + param1 + param2);
}
}
当我做类似的事情时:
require(['https://path/to/example_function.js'], function(exampleFunction){
console.log(exampleFunction);
});
我明白了:
define( function() { return function(param1, param2) {
this.helloWorld = function() {
console.log('hello world' + param1 + param2);
}
} } );
如何注入此函数的依赖项?我似乎无法通过调用实例化我自己注入的函数。
当在本地加载时,我可以这样做:
var exampleFunction = new ExampleFunction(someParam, someOtherParam);
但是当我加载服务器时,我不能。
思想吗
答案 0 :(得分:2)
如果您使用的是非RequireJS格式的脚本(包含在define()中),则必须在require配置中对它们进行填充,以便正确加载它们:
require.config({
paths: {
"exampleFunction": "https://path/to/example_function.js"
},
shim: {
"exampleFunction": {
exports: "exampleFunction"
}
}
});
然后像这样使用它们
require(["exampleFunction"], function(exampleFunction){
new exampleFunction(param1, param2);
});
答案 1 :(得分:1)
如果要将外部文件作为模块提供,请使用paths
config。文件路径应该是无扩展名的。这是an example from the docs:
requirejs.config({
//To get timely, correct error triggers in IE, force a define/shim exports check.
enforceDefine: true,
paths: {
jquery: [
'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min',
//If the CDN location fails, load from this location
'lib/jquery'
]
}
});
//Later
require(['jquery'], function ($) {
});