2016-11-02 1 views
2

Das Projekt, an dem ich gerade arbeite, verwendet requireJS. Funktioniert sehr gut, wenn wir sie bauen wollen, die wir verwenden:RequireJS: Namespace in der Entwicklungsumgebung, um Konflikte mit anderen AMD-Bibliotheken zu vermeiden

({ 
    // .. 
    namespace: 'projectCodeName', 
    // .. 
}); 

Aber ich brauche manchmal eine andere Bibliothek zu laden, die auch requireJS verwendet, aber nicht Namespace es nicht :().

Ich Produktion, ich habe kein Problem, seit meinem eigenen requirejs ist erreichbar unter window.projectCodeName.require().

Aber im Dev funktioniert nichts wie erwartet.

Ich fand ich bauen kann requireJS without uglyfying, aber immer noch, es ist schade Datei Spiel, Zeilennummern usw.

Kann ich requireJS im Entwicklungsmodus mit einem Namensraum zu verlieren. Etwas wie:

<script data-namespace="projectCodeName" src="bower_components/requirejs/require.js"></script> 

Prost


EDIT:

Ich habe versucht, dies manuell zu tun:

window.projectCodeName = window.projectCodeName || {}; 
window.projectCodeName.require = window.require; 
window.projectCodeName.requirejs = window.requirejs; 
window.projectCodeName.define = window.define; 
delete require; 
delete requirejs; 
delete define; 

Leider letztere delete require nicht funktioniert, es gibt false, was bedeutet, dass dies eine non-configurable property ist.

Ich dachte requirejs war wirklich gut bei der Vermeidung globaler Namespace-Probleme, aber stattdessen bringt es Ärger. Es ist wirklich nervig und enttäuschend.

Antwort

0

Es gibt multiversion support in requirejs, so dass Sie einen Kontext pro Projekt einrichten können. Dies ist ein Beispiel von der Doc-Seite. Ist das was du willst?

var reqOne = require.config({ 
    context: "version1", 
    baseUrl: "version1" 
}); 

reqOne(["require", "alpha", "beta",], 
function(require, alpha, beta) { 
    log("alpha version is: " + alpha.version); //prints 1 
    log("beta version is: " + beta.version); //prints 1 

    setTimeout(function() { 
    require(["omega"], 
     function(omega) { 
     log("version1 omega loaded with version: " + 
      omega.version); //prints 1 
     } 
    ); 
    }, 100); 
}); 

var reqTwo = require.config({ 
    context: "version2", 
    baseUrl: "version2" 
}); 

reqTwo(["require", "alpha", "beta"], 
    function(require, alpha, beta) { 
    log("alpha version is: " + alpha.version); //prints 2 
    log("beta version is: " + beta.version); //prints 2 

    setTimeout(function() { 
    require(["omega"], 
     function(omega) { 
     log("version2 omega loaded with version: " + 
     omega.version); //prints 2 
     } 
    ); 
    }, 100); 
}); 
Verwandte Themen