如何从多个路径加载require.js,而不使用绝对URL?

时间:2013-10-07 11:43:31

标签: javascript jquery html requirejs

我有一个像这样的目录结构:

├── index.html
├── static
│   └── js
│       ├── main.js
│       ├── jquery.js
│       └── require.js
└── subfolder
    └── index.html

在我的顶级index.html中,我正在加载这样的require.js,它可以运行:

<script data-main="static/js/main" src="static/js/require.min.js"></script>

但是,在subfolder/index.html中,我无法成功加载require.js:

<script data-main="../static/js/main" src="../static/js/require.min.js"></script>

导致“脚本错误:jquery”,并且对于main模块的每个依赖项都是相同的。

require.js的baseUrl设置为static/js。因为这些页面是在本地使用的,所以我不能使用绝对URL。如何从子文件夹中获取require.js?

main.js文件的内容:

require.config({
    baseUrl: 'static/js',
    paths: {
        'jquery': 'jquery-2.0.3',
    }
});

require(['jquery'], function($) { ... }

1 个答案:

答案 0 :(得分:2)

解决方案是根本不设置baseUrl

  

如果配置中未显式设置baseUrl,则默认值将是加载require.js的HTML页面的位置。如果使用data-main属性,该路径将成为baseUrl。

删除baseUrl设置导致上述示例正常运行。