Require.JS shim-config-global-Bereich?

Habe ich folgende Konfiguration für requireJS.

requirejs.config({
     paths: {
            'resources' : '/Scripts/resources'
     },
     shim: {
             'resources': {
                           exports: 'LocalizedStrings'
           }
     }
});

Und meine resources.JS sehen aus wie folgt:

LocalizedStrings = {
                    title: "Demo",
                    save: "Save"
}

Wenn ich jetzt laden von Ressourcen als Abhängigkeit in main.JS Datei auf die ich zugreifen kann LocalizedStrings und es funktioniert.

//main.js
define(function(require){
    var LocalizedStrings = require('resources');
    console.log(LocalizedStrings); //works as expected
});

Jedoch auf andere Module, die ich nicht wirklich brauchen, zum laden von Ressourcen als Abhängigkeiten Zugang zu "LocalizedStrings'.

//othermodule.js
define(function(require){
    console.log(LocalizedStrings); //works as expected even though resources dependency is not loaded
});

Was ich nicht verstehe ist, wenn ich das laden einer JS-Datei mit shim und laden Sie es einmal, es wird weltweit verfügbar und ich muss nicht laden Sie die gleiche Abhängigkeit wieder, die in anderen Modulen.

Ein Modul geladen über AMD (wie RequireJS) normalerweise nicht global geworden. Aber Sie sind nicht mit einem 'echten' Modul resources.js. Den code hast du in resources.js mutiert globalen Bereich, also in Ihrem Fall Sie mutieren globalen Bereich.
Vielen Dank für die Beantwortung der Frage. Ich möchte wirklich nicht, dass die resources.js in Modul. Ich habe nur versucht zu verstehen, wie die shim-Konfigurationen gearbeitet. Lassen Sie uns jetzt sagen, wenn ich shim Rückgrat und Unterstrich in requireJS und laden Sie Sie als Abhängigkeit in main.js einmal hat requireJS machen, Backbone und Underscore zu werden, die Global verfügbar, ohne die Notwendigkeit für mich, Sie zu laden, die in anderen Modulen.
Rückgrat und Unterstrich beides ändern, die globalen scope, so dass, wenn der browser Ihren code, dann die globals vorhanden. Dies wird geschehen, wenn das laden als shim in RequireJS, oder als wenn Sie ein script-tag mit Ihrem src-direkt. Sobald die globals existieren, Sie existieren (sofern Sie nicht ausdrücklich deleted Schätze ich mal).
Ich werde ordentlich es als Antwort.

InformationsquelleAutor nimgrg | 2013-04-02

Schreibe einen Kommentar