首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Backbone + r.js :未定义Backbone

Backbone + r.js :未定义Backbone
EN

Stack Overflow用户
提问于 2014-11-21 21:13:59
回答 2查看 501关注 0票数 1

我试着用Grunt和grunt-contrib-requirejs插件优化Backbone项目。项目的结构如下:

代码语言:javascript
复制
- root/
   |- public/
   |   |- components/
   |   |- js/
   |   |    |- login/
   |   |    |    |- [dirs and files]
   |   |    |    |- main.js                   
   |   |- libs/
   |- gruntfile.js

componentslibs目录中,我已经安装了Bower的库。gruntfile.js提供了以下requirejs选项:

代码语言:javascript
复制
 requirejs: {
  compile: {
    options: {
      name: "main",
      baseUrl: "public/js/login/",
      mainConfigFile: "public/js/login/main.js",
      out: "public/js/app.build.js",
      findNestedDependencies: true,
    }
  }
},

bower.json中,我有以下依赖项:

代码语言:javascript
复制
"dependencies": {
  "jquery": "2.0.3",
  "jquery.cookie": "1.4.1",
  "underscore": "1.6.0",
  "backbone": "~1.1.2",
  "backbone-validation": "~0.9.1",
  "backbone-mediator": "~1.0.0",
  "backbone.subviews": "~0.7.3",
  "font-awesome": "~4.1.0",
  "bootstrap": "~3.2.0",
  "requirejs": "~2.1.14",
  "require-handlebars-plugin": "~0.8.1",
  "pace": "~0.5.5",
  "modernizr": "~2.8.3",
  "fastclick": "~1.0.2",
  "moment": "~2.7.0",
  "sweetalert": "~0.2.1"
}

最后,给出了main.js的需求配置和主要应用:

代码语言:javascript
复制
require.config({
  waitSeconds: 0,
  hbs: {
    templateExtension: 'html',
    disableI18n: true,
    disableHelpers: true
  },
  shim: {
    'jquery': {
      exports: '$'
    },
    'jqueryCookie': {
      deps: ['jquery']
    },
    'underscore': {
      exports: '_'
    },
    'backbone': {
      deps: ['underscore', 'jquery'],
      exports: 'Backbone'
    },    
    'backboneREST' : {
      deps: ['backbone']
    },
    'backboneValidation' : {
      deps: ['backbone']
    },
    'handlebars': {
      deps: ['handlebars'],
      exports: 'Handlebars'
    }
  },
  paths: {
    jquery:              '../../components/jquery/jquery.min',
    jqueryCookie:        '../../components/jquery.cookie/jquery.cookie',
    underscore:          '../../components/underscore/underscore',
    backbone:            '../../components/backbone/backbone',
    backboneValidation:  '../../components/backbone-validation/src/backbone-validation',
    backboneSubviews:    '../../components/backbone.subviews/backbone.subviews',
    hbs:                 '../../components/require-handlebars-plugin/hbs',
    moment :             '../../components/moment/moment',
    modernizr:           '../../components/modernizr/modernizr',
    sweetAlert:          '../../components/sweetalert/lib/sweet-alert',
    client:              '../../libs/client',
    backboneREST:        '../../libs/backbone-rest',
    viewManager:         '../../libs/view-manager',
    errorManager:        '../../libs/error-manager',
  }
});

运行grunt任务会给我Done, without errors.消息,但当我试图在浏览器中加载结果脚本时,它会给我Backbone is not defined错误。来源地图显示它在Backbone.Validation中下降了。有什么办法解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2015-03-02 22:51:02

几天前我也犯了同样的错误。

票数 1
EN

Stack Overflow用户

发布于 2014-11-22 07:31:17

当Backbone.validation扩展Backbone时,您应该在填充程序上导出Backbone,这样它就不会被覆盖。

代码语言:javascript
复制
'backboneValidation' : {
  deps: ['backbone'],
  exports: 'Backbone'
}

希望它能解决你的问题。

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

https://stackoverflow.com/questions/27062274

复制
相关文章

相似问题

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