首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理require.js

处理require.js
EN

Stack Overflow用户
提问于 2012-08-13 05:53:27
回答 2查看 470关注 0票数 2

我想我并不完全理解require.js的工作方式。下面是我创建的一个简单模块:

代码语言:javascript
复制
requirejs.config({
  paths: {
    'underscore'    : 'libs/underscore-min',
    'backbone'      : 'libs/backbone-min'
  }
});

define([
  "underscore",
  "backbone"
  ], function(_, Backbone) {
    console.log(_);
    console.log(Backbone);
    var MyCollection = Backbone.Collection.extend({
        initialize: function() {
            this.on("all", function(event) {
                console.log(event);
            });
        }

    });

    return MyCollection;
});

我从我的html加载它:

代码语言:javascript
复制
<script data-main="js/mycollection.js" src="js/libs/require.min.js"></script>

问题是它断断续续地工作。有时Backbone对象会在我需要的时候出现在函数中,有时不会(并给我带来http://requirejs.org/docs/errors.html#notloaded错误)。如果我只是在浏览器中点击重新加载,我会得到50/50的更改。

这里我肯定遗漏了一些非常基本的东西,报告的错误对我来说没有任何意义,我认为require.js机制的整个想法是只有当所有依赖项都加载时才会调用我的函数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-13 07:09:05

我的猜测是,您使用的不是下划线和主干的AMD版本。如果是这种情况,并且这两个包没有包装为AMD模块-那么用于模块的定义函数将不会像它应该的那样工作。

对于非模块js脚本,更合适的形式是使用require()函数。

或者-你可以在这里找到下划线和主干的AMD版本。AMD支持在某种程度上被取消了下划线和主干。

AMD Underscore

AMD Backbone

票数 3
EN

Stack Overflow用户

发布于 2012-08-13 15:14:19

由于下划线和Backbone没有被定义为AMD模块,require.js不知道下划线是Backbone的依赖项。所以我猜在50%的情况下,当Backbone尝试使用下划线时,下划线不会加载。

您可以使用require.js填充配置http://requirejs.org/docs/api.html#config-shim告诉require.js有关依赖关系结构的信息。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11926157

复制
相关文章

相似问题

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