好吧,这让我发疯,所以也许有人可以指出我正确的方向......
我使用最新的 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>
预期的:
Loads http://localhost:3000/js/vendor/bootstrap.js
和日志hello world!
Actual:
尝试加载http://localhost:3000/js/bootstrap.js
-- 失败:'(
我尝试过使用相对路径而不是绝对路径data-main
and src
在 require 脚本标签中。我所做的一切似乎都不会触发baseUrl
。我完全错过了文档中的某些内容吗?
问题是 require.js 异步加载脚本(这就是 requirejs 背后的要点),所以当你添加require()
加载 require 后立即放入脚本标签中,该脚本在之前执行js/main.js
加载。
最简单的方法是将所有这些包含在main.js
,或者创建一个新文件来保存这一部分并从 js/main 加载它
/js/main.js
require.config({
baseUrl: '/js/vendor/'
});
require(['jquery', 'bootstrap'], function($) {
$(function() {
console.log('hello world!');
});
});
-- OR --
/js/main.js
require.config({
baseUrl: '/js/vendor/',
deps: ['../boostrap']
});
/js/bootstrap.js
define(['jquery', 'bootstrap'], function($) {
$(function() {
console.log('hello world!');
});
});
note require()
成为了define()
在引导文件中
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)