简体   繁体   English

用RequireJS加载Marionette(v3)的正确方法是什么?

[英]What's the correct way to load Marionette (v3) with RequireJS?

I searched in vain all over Google on how to load Marionette v3-pre.4 - latest version until now (July 2016) - with RequireJS . 我在整个Google上徒劳地搜索了如何使用RequireJS加载Marionette v3-pre.4直到现在(2016年7月)的最新版本。

The bundled version of the library seems to be broken for RequireJS so I have to manually include " backbone.babysitter " and " backbone.radio " which are required for this version of Marionette. 该库的捆绑版本对于RequireJS似乎已损坏,因此我必须手动包括此Marionette此版本所需的“ 骨架.babysitter ”和“ 骨架 .radio”。

According to: versioneye.com I need: 根据: versioneye.com我需要:

  • " backbone.babysitter " 1.0.0-pre.1 and “backbone.babysitter” 1.0.0-pre.1
  • " backbone.radio " * 2.0.0-pre.1* 骨干无线电” * 2.0.0-pre.1 *

So I tried installing them with Bower : 所以我尝试用Bower安装它们:

bower install backbone.babysitter 凉亭安装骨干.babysitter

It returned: 它返回:

Unable to find a suitable version for backbone.babysitter, please choose one by typing one of the numbers below:
    1) backbone.babysitter#^0.1.12 which resolved to 0.1.12
    2) backbone.babysitter#1.0.0-pre.1 which resolved to 1.0.0-pre.1 and is required by marionette#3.0.0-pre.4

Prefix the choice with ! to persist it to bower.json

I selected the 2nd one like this: 我选择了第二个这样的:

? Answer !2

It returned: 它返回:

bower resolution    Saved backbone.babysitter#1.0.0-pre.1 as resolution

I did exactly the same with backbone.radio : 我也正好与backbone.radio相同:

bower install backbone.radio 凉亭安装ribs.radio

Returned: 回来:

Unable to find a suitable version for backbone.radio, please choose one by typing one of the numbers below:
    1) backbone.radio#^1.0.5 which resolved to 1.0.5
    2) backbone.radio#2.0.0-pre.1 which resolved to 2.0.0-pre.1 and is required by marionette#3.0.0-pre.4

Prefix the choice with ! to persist it to bower.json

Selected: 已选:

? Answer !2 回答!2

Returned: 回来:

bower resolution    Saved backbone.radio#2.0.0-pre.1 as resolution

Everything seemed to be ok, but when I checked the version for these two libraries in each's " bower.json " file, I found out that: 一切似乎都还不错,但是当我在每个文件的“ bower.json ”文件中检查了这两个库的版本时,发现:

backbone.babysitter is at: 保姆是在:

  "name": "backbone.babysitter",
  "version": "0.1.11"

and backbone.radio : bone.radio

  "name": "backbone.radio",
  "version": "1.0.4"

Where did I go wrong? 我哪里做错了?

This is my bower.json : 这是我的bower.json

{
  "name": "Example App",
  "authors": "Consta Gorgan",
  "dependencies": {
    "backbone": "~1.2.3",
    "backbone.radio": "~2.0.0",
    "backbone.babysitter": "~1.0.0",
    "marionette": "~3.0.0",
    "requirejs": "~2.1.15",
    "requirejs-plugins": "~1.0.2"
  },
  "resolutions": {
    "backbone.radio": "2.0.0-pre.1",
    "backbone.babysitter": "1.0.0-pre.1"
  }
}

This is my shim file: 这是我的填充文件:

requirejs.config({
  paths: {
    jquery: '../bower_components/jquery/dist/jquery',
    underscore: '../bower_components/underscore/underscore',
    backbone: '../bower_components/backbone/backbone',
    'backbone.radio': '../bower_components/backbone.radio/build/backbone.radio',
    'backbone.babysitter': '../bower_components/backbone.babysitter/src/build/backbone.babysitter',
    marionette: '../bower_components/marionette/lib/core/backbone.marionette'
  },
  shim: {
    jquery: {
      exports: '$'
    },
    backbone: {
      deps: [
        'underscore',
        'jquery'
      ],
      exports: 'Backbone'
    },
    underscore: {
      exports: '_'
    },
    marionette: {
      deps: [ 'jquery', 'underscore', 'backbone', 'backbone.radio', 'backbone.babysitter' ],
      exports: 'Marionette'
    }
  }
})

And this is how I load modules with RequireJS in my app.js file: 这就是我在app.js文件中使用RequireJS加载模块的方式:

define([
  'jquery',
  'underscore',
  'backbone',
  'marionette',
  'router'
], function ($, _, Backbone, Marionette, Router) {
  'use strict'

  var init = function () {
    Router.init()
  }

  return {
    init: init
  }
})

Aaand this is the error I keep getting in my browser: Aaand这是我一直在浏览器中遇到的错误:

无法设置未定义的属性“ VERSION”-*图像*

And this one after a few more seconds: 再过几秒钟,这个:

模块的加载超时:骨架.radio-*图像*

代替../bower_components/backbone.babysitter/src/build/backbone.babysitter使用../bower_components/backbone.babysitter/lib/backbone.babysitter

If anyone runs into this, v3.0 changed to remove babysitter 如果有人遇到此问题,请更改v3.0以删除保姆

requirejs.config({
    paths: {
        jquery: 'node_modules/jquery/dist/jquery',
        underscore: 'node_modules/underscore/underscore',
        backbone: 'node_modules/backbone/backbone',
        'backbone.radio': 'node_modules/backbone.radio/build/backbone.radio',
        marionette: 'node_modules/marionette/lib/backbone.marionette'
    },
    shim: {
        jquery: {
            exports: '$'
        },
        backbone: {
            deps: [
                'underscore',
                'jquery'
            ],
            exports: 'Backbone'
        },
        'backbone.radio': {
            deps: [
                'underscore',
                'backbone'
            ],
            export: 'Radio'
        }
        underscore: {
            exports: '_'
        },
        marionette: {
            deps: [ 'jquery', 'underscore', 'backbone', 'backbone.radio' ],
            exports: 'Marionette'
        }
    }
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM