2012-08-12 2 views
1

J'essaie d'en savoir plus sur requireJS. Donc, si je comprends bien, le code suivant devrait être légitime. Est-ce la bonne façon de rendre ma demande modulaire?Backbone.js + underscore.js + jQuery dans requireJS ... est-ce la bonne façon?

C'est application.js, où data-main attribut points:

requirejs.config({ 
    baseUrl: 'scripts/vendor', // By default, load all from vendor folder 
    shim: { 
     'backbone' : { // Do not support module loading 
      deps: ['underscore', 'jquery'], // Do not support module loading 
      exports: 'Backbone' 
     }, 
    }, 
    paths: { 
     models: '../application/models', // Load from this folder if starts with user 
     views: '../application/views', // As above... 
    } 
}); 

requirejs(['jquery', 'backbone', 'views/user'], function($, Backbone, UserView) { 
}); 

Et mon module pour une vue/modèle (assez inutile en ce moment):

fichier application/views/user.js:

// underscore should be loaded now 
define(['jquery', 'backbone', 'models/user'], function($, Backbone, User) { 
    return Backbone.View.extend({ 
     model: User, 

     el: $('tr'),  

     initialize: function() {} 
    }); 
}); 

Fichier application/models/user.js:

define(['backbone'], function(Backbone) { // underscore should be loaded now 
    return Backbone.Model.extend({ 
    }); 
}); 
+0

ce qui ne définit ([ 'jquery', 'épine dorsale', 'modèles/user'], la fonction ($, Backbone, utilisateur) {moyen est présente une convention pour certains cadre? travailler en javascript? –

Répondre

5

Vous devez également souligner le trait de soulignement car il n'est pas compatible AMD.

underscore: { 
    exports: '_' 
} 

Je recommande la recherche dans https://github.com/tbranyen/backbone-boilerplate/ car il faut beaucoup de maux de tête hors de l'utilisation RequireJS.

+0

Oh merci, pourquoi jquery ne devrait pas être sous shim? – gremo

+1

jQuery est déjà compatible AMD.shim est pour les bibliothèques qui ne supportent pas AMD. – tbranyen

1

Utilisez lodash à la place de souligner, est une solution supérieure compatible complète et supporte la charge AMD. Consultez les repères et la documentation;)

requirejs.config({ 
    appDir: ".", 
    baseUrl: "js", 
    paths: { 
     'jquery': ['//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min','libs/jquery-min'], 
     'lodash': 'libs/lodash.min', 
     'backbone': 'libs/backbone.min', 
    }, 
    shim: { 
     'backbone': {deps:['lodash','jquery'], exports: 'Backbone'} 
    } 
}); 

require([ 
    'jquery', 'lodash','backbone' 
], 
function($, _){ 
    return {}; 
}); 
Questions connexes