jQuery在子文件夹中不使用RequireJS
我有以下文件夹结构:jQuery在子文件夹中不使用RequireJS,requirejs,Requirejs,我有以下文件夹结构: index.html js/ 自由基/ require.js jquery.js main.js 在index.html中,我在head部分添加了以下行: <script data-main="js/main" src="js/libs/require.js"></script> 在chrome web inspector中,我看到jquery成功加载,但文本没有出现在我的div中。当我将jquery移出/js/libs并将其放入/js
- index.html
- js/
- 自由基/
- require.js
- jquery.js
- main.js
- 自由基/
<script data-main="js/main" src="js/libs/require.js"></script>
在chrome web inspector中,我看到jquery成功加载,但文本没有出现在我的div中。当我将jquery移出/js/libs
并将其放入/js
(当然,将依赖项更改为['jquery']
)时,它就可以工作了
我做错了什么?为什么我不能将jquery放在/js/libs
中以保持事情的有序性
如果我配置了路径,谢谢
require.config({
paths: {
'jquery': 'libs/jquery'
}
});
并将要求更改为:
require(['jquery'], function ($) {
$('#test').html('123');
});
它似乎在工作。如果有人能解释为什么。您必须提供basePath才能正常工作。 在您的情况下,它只是js。您可以在main.js文件的开头执行此操作
require.config({
baseUrl: '/js'
});
在这之后,这段代码将起作用,因为它将把baseUrl与您的相对url连接起来
require(['libs/jquery'], function ($) {
$('#test').html('123');
});
是否有可能在main.js运行时DOM没有准备好,因此
#test
没有更新?尝试将测试代码包装在$(function(){…})中
当jQuery调用define
(AMD模块定义/提供给任何AMD加载程序的方式)时,它为自己提供模块名jQuery
。现在,如果您调用require(['lib/jquery'],…)
它将在lib
中找到jquery.js
,加载文件并计算出它没有命名为lib/jquery
,而只是jquery
。因此,不是您正在寻找的模块。至少我是这样理解这个问题的。即使在函数回调中没有$reference,它也可以工作,因为jQuery reference在全局范围内。为了避免这种情况,您需要将jQuery定义为一个模块,解决名称冲突并将其作为对象返回。类似于define([“jQuery”],function(){return jQuery.noConflict(true);});
require(['libs/jquery'], function ($) {
$('#test').html('123');
});