在子文件夹中jQuery不使用RequireJS

EsT*_*eGe 4 requirejs

我有以下文件夹结构:

  • 的index.html
  • JS /
    • 库/
      • require.js
      • 的jquery.js
    • main.js

在index.html中,我将以下行添加到head部分:

<script data-main="js/main" src="js/libs/require.js"></script>
Run Code Online (Sandbox Code Playgroud)

当我向main.js添加一个简单的警报时,它可以工作.当我想使用jQuery时,它不起作用:

require(['libs/jquery'], function ($) {
    $('#test').html('123');
});
Run Code Online (Sandbox Code Playgroud)

在chrome web检查器中,我看到jquery成功加载,但文本没有出现在我的div中.当我将jquery移出./js/libs并将其放入./js(并且当然将依赖项更改为['jquery'])时,它可以工作.

我究竟做错了什么?为什么我不能把jquery放进./js/libs去以保持组织有序?

谢谢

EsT*_*eGe 8

如果我配置路径

require.config({
    paths: {
        'jquery': 'libs/jquery'
    }
});
Run Code Online (Sandbox Code Playgroud)

并将要求更改为:

require(['jquery'], function ($) {
    $('#test').html('123');
});
Run Code Online (Sandbox Code Playgroud)

它似乎工作.如果有人能解释我原因.

  • 当jQuery调用`define`(AMD模块定义/提供给任何AMD加载器的方式)时,它给自己模块名称`jquery`.现在,如果你调用`require(['lib/jquery'],...)`它将在`lib`中找到`jquery.js`,加载文件并确定它没有命名为`lib/jquery`但是只有`jquery`.因此,不是您正在寻找的模块.至少这是我如何理解这个问题. (3认同)