所以有类似的问题在流传,但我希望能得到一个最新的答案。
版本-
微风:1.4.0 淘汰赛:2.2.1 RequireJS:2.1.5
我正在尝试使用 knockoutJS 在 requireJS 项目中加载微风。我们的 requireJS 配置非常简单——
require.config({
waitSeconds: 15,
paths: {
'templates': "/ist-common/templates",
'lib': '/ist-common/js/lib',
'ist': '/ist-common/js/ist'
}
});
所以我将微风库加载到以下目录结构中-
lib
---->q.js
---->breeze.debug.js
我正在尝试定义一个“数据服务”模块来使用微风并像这样设置它-
define(['lib/knockout', 'lib/q', 'lib/breeze.debug'], function (ko, Q, breeze) {
var serviceName = '/ist/rest'; // route to the endpoint
var manager = new breeze.EntityManager(serviceName);
manager.enableSaveQueuing(true);
var query = new EntityQuery("missions");
manager.executeQuery(query, function(data) {
console.log("success");
});
});
这种配置可行吗?我试图将我的脚本标签降到最低,只加载requireJS,然后加载敲除、jquery等,因为我需要它们在我的模块定义中。
此配置当前失败并显示一条消息-
错误:无法初始化 Q。请参阅https://github.com/kriskowal/q
编辑*
我能够让它使用以下配置加载 Q,但这感觉不对。为什么要设置window.Q?我不应该能够以命名模块的形式访问 Q 吗?
var require = {
waitSeconds: 15,
deps: ["/ist-common/js/lib/q.js"],
callback: function(Q){
window.Q = Q;
},
paths: {
'templates': "/ist-common/templates",
'lib': '/ist-common/js/lib',
'ist': '/ist-common/js/ist'
}
};