2013-04-28 12 views
21

Ich kann nicht herausfinden, wie man Bootstrap über RequireJS lädt. Keines der Beispiele, die ich fand, funktionierte für mich.Bootstrap kann nicht mit RequireJS geladen werden

Hier ist meine Shim:

require.config({ 
    // Sets the js folder as the base directory for all future relative paths 
    baseUrl: "./js", 
    urlArgs: "bust=" + (new Date()).getTime(), 
    waitSeconds: 200, 
    // 3rd party script alias names (Easier to type "jquery" than "libss/jquery, etc") 
    // probably a good idea to keep version numbers in the file names for updates checking 
    paths: { 

     // Core libsraries 
     // -------------- 
     "jquery": "libs/jquery", 
     "underscore": "libs/lodash", 
     "backbone": "libs/backbone", 
     "marionette": "libs/backbone.marionette", 

     // Plugins 
     // ------- 
     "bootstrap": "libs/plugins/bootstrap", 
     "text": "libs/plugins/text", 
     "responsiveSlides": "libs/plugins/responsiveslides.min", 
     'googlemaps': 'https://maps.googleapis.com/maps/api/js?key=AIzaSyDdqRFLz6trV6FkyjTuEm2k-Q2-MjZOByM&sensor=false', 


     // Application Folders 
     // ------------------- 
     "collections": "app/collections", 
     "models": "app/models", 
     "routers": "app/routers", 
     "templates": "app/templates", 
     "views": "app/views", 
     "layouts": "app/layouts", 
     "configs": "app/config" 

    }, 

    // Sets the configuration for your third party scripts that are not AMD compatible 
    shim: { 

     "responsiveSlides": ["jquery"], 
     "bootstrap": ["jquery"], 
     "backbone": { 

     // Depends on underscore/lodash and jQuery 
     "deps": ["underscore", "jquery"], 

     // Exports the global window.Backbone object 
     "exports": "Backbone" 

     }, 
     "marionette": { 
     // Depends on underscore/lodash and jQuery 
     "deps": ["backbone", "underscore", "jquery"], 
     // Exports the global window.Backbone object 
     "exports": "Marionette" 
     }, 
     'googlemaps': { 'exports': 'GoogleMaps' }, 
     // Backbone.validateAll plugin that depends on Backbone 
     "backbone.validate": ["backbone"] 

    }, 
    enforceDefine: true 

}); 

und hier ist, wie ich Bootstrap nennen:

define([ 
     "jquery", 
     "underscore", 
     "backbone", 
     "marionette", 

     "collections/Navigations", 
     'bootstrap', 
     ], 
function($, _, Backbone, Marionette, Navigations, Bootstrap){ 

Der Fehler, die ich bekomme, ist dies:

Uncaught Error: No define call for bootstrap 

Alle Ideen, wie um das gelöst zu bekommen?

Antwort

12

Die Bootstrap-Bibliothek gibt kein Objekt wie jQuery, Underscore oder Backbone zurück: Dieses Skript ändert nur das jQuery-Objekt durch Hinzufügen neuer Methoden. Also, wenn Sie die Bootstrap-Bibliothek verwenden möchten, müssen Sie nur noch in den Modulen hinzufügen und die jquery Methode wie gewohnt verwenden (ohne Bootstrap wie param declarating, weil der Wert undefined ist):

define([ 
    "jquery", 
    "underscore", 
    "backbone", 
    "marionette", 
    "collections/Navigations", 
    "bootstrap", 
    ], 

function($,_,Backbone,Marionette,Navigations){ 
    $("#blabla").modal("show"); //Show a modal using Bootstrap, for instance 
}); 
+0

Danke für die Hilfe darauf. Ich habe das versucht, bevor ich die Frage gepostet habe, und ich habe es jetzt erneut versucht - es funktioniert nicht. Die Seite wird nicht geladen, aber kein Fehler in der Konsole. Irgendwelche anderen Vorschläge geschätzt. –

+0

Nun habe ich "EnforceDefine: true" hinzugefügt und ich bekomme den folgenden Fehler "Nein definieren Aufruf für libs/plugins/bootstrap" aber der Pfad ist korrekt. Also, ich weiß nicht wirklich, wo ich von hier aus hingehen soll. –

+0

Diese Antwort http://stackoverflow.com/questions/13377373/shim-twitter-bootstrap-for-requirejs hilft mit dem erzwingenDefine Fehler – Andrew

7

Ich fand es ausreichend war, folgendes zu meinem requirejs.config Anruf (Pseudo-Code) hinzufügen:

requirejs.config({ 
    ... 
    shim: { 
    'bootstrap': { 
     deps: ['jquery'] 
    } 
    } 
}); 
4

I Require.Js ORDER Plugin, was es tut, verwenden? Einfach lädt alle Bibliotheken, um in diesem Fall, dass Sie keine Fehler erhalten wird, ohh und Bootstrap hängt von jQuery, so müssen wir Shim in diesem Fall verwenden:

requirejs.config({ 
    baseUrl: "./assets", 
    paths: { 
     order: '//requirejs.org/docs/release/1.0.5/minified/order', 
     jquery: 'http://code.jquery.com/jquery-2.1.0.min', 
     bootstrap: '//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min' 
    }, 
    shim: { 
     'bootstrap': { 
      deps:['jquery'] 
     } 
    } 
}); 

require(['order!jquery', 'order!bootstrap'], function($) { 

}); 
Verwandte Themen