我知道我的问题与此one非常相似,但我遇到了同样的问题,并且没有一个解决方案适合我。
我的目录结构如下:
static
lib
require.js
jquery-1.11.3.js
progressbar.js
client
client.messages.js
client.js
main.js
config.js
我的HTML文件是这样的:
<script src="{{ url_for('static', filename='scripts/lib/require.js') }}"></script>
<script>
var require = {
baseUrl: "/static/script",
paths: {
/* Load common libraries from CDN and fallback to local versions. */
"jquery": "lib/jquery-1.11.3.min.js",
"progressbar": "lib/progressbar.min.js",
"messages": "client/client.messages.js"
}
};
</script>
<script src="{{ url_for('static', filename='scripts/main.js') }}"></script>
我还尝试在config.js文件中进行配置,如:
var require = {
baseUrl: "/static/script",
paths: {
/* Load common libraries from CDN and fallback to local versions. */
"jquery": "lib/jquery-1.11.3.min.js",
"progressbar": "lib/progressbar.min.js",
"messages": "client/client.messages.js"
}
};
然后HTML文件就像:
<script src="{{ url_for('static', filename='scripts/config.js') }}"></script>
<script src="{{ url_for('static', filename='scripts/lib/require.js') }}"></script>
<script src="{{ url_for('static', filename='scripts/main.js') }}"></script>
在我的HTML文件中还有这一行:
<body onload="bodyLoaded()">
这个bodyLoaded()
函数在我的main.js中:
var bodyLoaded = function () {
//load scripts first
var scripts = ['static/scripts/client/client.messages.js', 'static/scripts/client/client.js'];
$.getScript(scripts[0], function () {
$.getScript(scripts[1], function () {
pluginCheck();
});
});
};
我得到的错误是:
未捕获的ReferenceError:$未定义
代表bodyload()
中的这一行:
$.getScript(scripts[0], function () {
我错过了什么吗?
答案 0 :(得分:2)
嗯......你正在加载RequireJS,你已经配置了它,但你没有使用它。
获得所需内容的一种方法是:
var bodyLoaded = function () {
//load scripts first
var scripts = ['static/scripts/client/client.messages.js', 'static/scripts/client/client.js'];
require(['jquery'], function ($) {
$.getScript(scripts[0], function () {
$.getScript(scripts[1], function () {
pluginCheck();
});
});
});
};
我添加了require(['jquery'], ...
,以便实际加载jQuery。
这就是说,这很可能不是你想要结束的解决方案。首先,在我看来,client.messages.js
和client.js
是加载RequireJS的候选者,所以,实际上,RequireJS应该配置为找到它们(我在配置中看到client.message.js
但是不是client.js
)。您很可能必须使用shim
来定义它们之间的依赖关系。
我建议您仔细阅读RequireJS' documentation。