gpt4 book ai didi

javascript - jQuery 不能与 RequireJS 一起使用

转载 作者:行者123 更新时间:2023-12-02 15:08:54 25 4
gpt4 key购买 nike

我知道我的问题与此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();
});
});
};

我得到的错误是:

Uncaught ReferenceError: $ is not defined

对于bodyload()中的这一行:

$.getScript(scripts[0], function () {

我错过了什么吗?

最佳答案

嗯...您正在加载 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.jsclient.js 是加载 RequireJS 的候选者,所以,实际上,应该配置 RequireJS 来找到它们(我在配置中看到 client.message.js 但没有看到 client.js)。您很可能必须使用 shim 来定义它们之间的依赖关系。

我建议您仔细阅读RequireJS' documentation .

关于javascript - jQuery 不能与 RequireJS 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34923372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com