使用require.js加载spin.js

时间:2013-02-25 11:02:42

标签: javascript requirejs spin.js

我最近开始了一个Javascript项目,现在我将它移到require.js。到目前为止,除了spin.js库之外,一切都运行良好。当我尝试访问spin.js相关的任何内容时,我收到以下错误消息:

  

未捕获的ReferenceError:未定义Spinner

我的requirejs.config看起来像这样:

requirejs.config({

    baseUrl: 'js',

        paths: {
            'jquery': 'lib/jquery',
            'spin': 'lib/spin',
    },

    shim: {
        'jquery' : {
            deps: [],
        },

        'spin' : {
            deps: [],
            exports: 'Spinner'
        },
    }
});  

示例模块如下所示:

require(['spin'], 
    function(Spinner)
    {   
        new Spinner();
    }
);

我正在使用shim config因为我有一些其他依赖项的模块。其他一切似乎都很好。我在这里缺少什么?

编辑:

亚历克斯指出我的图书馆包含错误。对于每个遇到麻烦而理解backbone.js和require.js的人,我建议this book,特别是有关模块化开发的章节。

2 个答案:

答案 0 :(得分:3)

旋转库不应该在配置中填充。来自spin.js源代码:

  if (typeof define == 'function' && define.amd)
    define(function() { return Spinner })
  else
    window.Spinner = Spinner

它已经在最后被定义为一个模块,而window.Spinner不是作为一个窗口对象创建的(这就是它不应该被填充的原因)

答案 1 :(得分:1)

我有类似的情况。我没有添加垫片但忽略了在Backbone之后将Spinner添加到函数中导致它未定义。

define([
  'jquery',
  'underscore',
  'backbone',
  'spin'
],

function($, _, Backbone, Spinner) {
  var SpinnerView = Backbone.View.extend({

    initialize: function() {

      this.loadingAnimation();
    },