【问题标题】:Working with breeze and requireJS使用微风和 requireJS
【发布时间】:2013-07-24 13:30:53
【问题描述】:

所以有类似的问题在流传,但我希望能得到最新的答案。

版本-

微风:1.4.0 淘汰赛:2.2.1 要求JS: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'
    }

});

所以我将微风库加载到以下目录结构中-


---->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'
    }

};

【问题讨论】:

  • 您使用的是哪个版本? (微风)
  • 使用版本编辑 - 微风:1.4.0 淘汰赛:2.2.1 RequireJS:2.1.5

标签: javascript knockout.js requirejs breeze amd


【解决方案1】:

您还需要一个适合微风的垫片(来自 Using Angular with breeze and require

breeze: {
    deps: ['ko', 'jquery', 'Q']
},

这是必需的,因为虽然微风确实定义了它自己,但它没有定义它的依赖关系,它只是希望它们存在(RequireJs 不能将它的依赖关系解释为变量而不是字符串?)。

shim 也是必需的,因为微风请求“jQuery”,但 jQuery 代码将自己定义为“jquery”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    相关资源
    最近更新 更多