我的文件结构如下所示。一切都在js文件夹中。
-js
--config.js
-app
--app.fb.js
--main.js
-lib
--jquery-1.9.0.js
--require.js
-tools
--r.js
--build.js
我已根据https://developers.facebook.com/docs/javascript/howto/requirejs
创建了配置文件config.js
require.config({
shim: {
'facebook' : { exports: 'FB' }
},
paths: {
'jquery': '../lib/jquery-1.9.0',
'facebook': '//connect.facebook.net/en_US/all'
}
});
app.fb.js
define(['facebook'], function(){
console.log("loaded fb");
});
build.js
({
baseUrl: "../app",
mainConfigFile: "../config.js",
name: "main",
out: "../core.js",
paths: {
'facebook': 'empty:'
}
})
main.js
require(["jquery", "app.fb"], function($, appfb){
// Log the callback parameter.
console.log( "$.fn.jquery:", $.fn.jquery );
});
最后我在这里调用优化文件(core.js)
<script type="text/javascript" data-main="js/core" src="js/lib/require-2.1.15.js"></script>
优化器似乎运行正常,但是当我加载页面时,我希望Facebook模块从CDN加载。相反,我得到了 GET http://example.com/js/facebook.js require-2.1.15.js:1901 未捕获错误:脚本错误:facebook
我已经花了很长时间在这上面并且无法解决问题! 有什么想法吗?
由于
答案 0 :(得分:1)
知道了,出于某种原因,这只有在我将config.js内容移动到main.js时才有效。
这看起来像:
require.config({
shim: {
'facebook' : { exports: 'FB' }
},
paths: {
'jquery': '../lib/jquery-1.9.0',
'facebook': '//connect.facebook.net/en_US/all'
}
});
require(["jquery", "app.fb"], function($, appfb){
// Log the callback parameter.
console.log( "$.fn.jquery:", $.fn.jquery );
});
在build.js中,更改
mainConfigFile: "../app/config.js",
到
mainConfigFile: "../app/main.js",
r.js优化器正确运行!