首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"Q“和"q”在angularjs中的区别及要求

"Q“和"q”在angularjs中的区别及要求
EN

Stack Overflow用户
提问于 2013-08-19 19:27:15
回答 2查看 1.2K关注 0票数 2

我正在创建一个基于AngularJS、Breeze和RequireJS的页面应用程序。在设置AMD与需求工作的角度和微风,我遇到了一个问题,布雷兹的依赖"q“。如果"q“的配置规则为小写,即使"shim”中没有显式导出,Breeze也会给出以下错误:

代码语言:javascript
复制
Uncaught Error: Unable to initialize Q. See https://github.com/kriskowal/q
"http://localhost:1498/Scripts/shared/breeze.js"breeze.js:1`

当require将所有引用从"q“更改为"Q”(即使没有导出)时,代码就能工作。有人知道为什么会这样吗?

这是工作需求配置:

代码语言:javascript
复制
require.config({
    baseUrl: '../Scripts',
    paths: {
        angular: 'shared/angular',
        bootstrap: 'shared/ui-bootstrap',
        dropdowns: 'app/directives/dropdowns',
        employeeApp: 'app/modules/employeeModule',
        controllers: 'app/controllers',
        dates: 'app/directives/dates',
        jquery: 'shared/jquery',
        Q: 'shared/q',
        breeze: 'shared/breeze',
        config: 'app/services/config',
        model: 'app/services/model',
        dataservice: 'app/services/dataservice',
        expenseInfo: 'app/services/expenseInfo'
    },
    shim: {
        'angular': { 'exports': 'angular' },
        'bootstrap': { deps: ['angular'] },
        //'q': { 'exports': 'q' },
        'breeze': { deps: ['Q', 'jquery'], 'exports': 'breeze' }
    },
    priority: [ 'angular', 'bootstrap', 'dropdowns', 'jquery',
                'Q', 'breeze', 'employeeSearch', 'dates' ]
});
EN

Stack Overflow用户

发布于 2013-12-10 06:51:58

虽然可以通过requireJs加载所有模块,但从我的第一个回答开始,我发现了一些困难,这使我感到太麻烦了。

如果您打算使用requireJs optomize (rjs)和杏仁提供一个合并的js文件,并关闭AMD加载程序,那么您将在一些库中找到错误。具体来说,我遇到了布雷兹,& Toastr的问题。

光学化器期望显式地定义具有显式命名的依赖项的语句。因为它在运行时配置了它的依赖项,所以在它发现需要时加载变量依赖名时使用变量依赖名。

另一个问题是使用CDN文件。杏仁不处理任何网络文件,因此它们必须预先加载。jQuery是主要的CDN候选,但它是包括微风在内的许多模块的要求。而光学分光是不能依赖于任何CDN文件的。

我的解决方案

我用我自己的补丁https://github.com/CodeSeven/toastr/issues/135修复了Toastr的光学功能。

但是由于修复Breeze会很麻烦,所以我又开始通过捆绑方式预装它。我还添加了我认为从CDN中获取的任何库。

我通过ASP.Net包加载了微风(及其先决条件)和CDN文件,然后在requirejs.config之前在main.js中定义了它们。

为了在我的生产代码中使用这些预定义的预加载,我用optomize的空值配置我的Weland-config.js。

代码语言:javascript
复制
                'jquery':               'empty:',
                'knockout':             'empty:',
                'Q':                    'empty:',
                'breeze':               'empty:',

HTH

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18321563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档