javascript – Require.js忽略baseUrl

前端之家收集整理的这篇文章主要介绍了javascript – Require.js忽略baseUrl前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好吧,这让我发疯,所以也许有人可以指出我正确的方向……

我正在使用最新的require.js和jquery作为我的模块加载器.我使用data-main属性指向带有baseUrl的配置文件.当我尝试加载模块时,将忽略baseUrl,并且require尝试从与main.js相同的位置加载.

/js/main.js

require.config({
    baseUrl: '/js/vendor/'
});

/path/to/page.html

<script data-main="/js/main" src="/js/vendor/require-jquery.js"></script>
<script>
require(['jquery','bootstrap'],function($) {
    $(function() {
        console.log('hello world!');
    });
});
</script>

预期:

加载http:// localhost:3000 / js / vendor / bootstrap.js并记录hello world!

实际:

尝试加载http:// localhost:3000 / js / bootstrap.js – 失败:'(

我已经尝试在require脚本标记中为data-main和src使用相对路径而不是绝对路径.我没做什么似乎触发了baseUrl.我完全错过了文档中的内容吗?

解决方法

问题是require.js异步加载脚本(这是requirejs背后的点),因此当您在加载require之后立即将require()添加到脚本标记中时,此脚本在加载js / main.js之前执行.

简单的方法是在main.js中包含所有这些,或者创建一个新文件来保存这个部分并从js / main加载它

/js/main.js

require.config({
    baseUrl: '/js/vendor/'
});

require(['jquery',function($) {
    $(function() {
        console.log('hello world!');
    });
});

– 要么 –

/js/main.js

require.config({
    baseUrl: '/js/vendor/',deps: ['../boostrap']
});

/js/boostrap.js

define(['jquery',function($) {
    $(function() {
        console.log('hello world!');
    });
});

注意require()成为bootstrap文件中的define()

猜你在找的JavaScript相关文章