C'est ainsi que nous amorçons les données de manière à ce qu'elles ne polluent pas l'espace de noms global. Au lieu de cela, il utilise exclusivement require.js. Il vous aide également à fournir la configuration initiale de l'application en fonction des variables du modèle.
Dans votre page rendue
<script src="require.js"></script>
<script>
define('config', function() {
return {
bootstrappedAccounts: <%= @accounts.to_json %>,
bootstrappedProjects: <%= @projects.to_json(:collaborators => true) %>
};
});
</script>
<script src="app.js"></script>
globals.js
Ce fichier vérifie la configuration et s'étend en utilisant n'importe laquelle des données retournées
define([
'config',
'underscore'
], function(config) {
var globals = {
};
_.extend(globals, config);
return globals;
});
config.js
Ce fichier est nécessaire si vous voulez être en mesure de charger l'application indépendamment du fait que vous ayez défini le fichier config
dans la page.
define(function() {
// empty array for cases where `config` is not defined in-page
return {};
});
app.js
require([
'globals',
'underscore',
'backbone'
], function(globals) {
if (globals.bootstrappedAccounts) {
var accounts = new Backbone.Collection(globals.bootstrappedAccounts);
}
if (globals.bootstrappedProjects) {
var projects = new Backbone.Collection(globals.bootstrappedProjects);
}
});