2012-07-06 7 views
6

Ich verwende eine .jst-Erweiterung für Vorlagendateien und lade diese mit dem requires-Text! Plugin. Zum BeispielWarum versucht Requirejs, eine '.js' an .jst Template-Dateien anzuhängen, die mit dem! Text-Plugin geladen werden?

define([ 
    'jquery', 
    'backbone', 
    'underscore', 
    'text!templates/MyView.jst' 
], 
function($, Backbone, _, templateText) { 
    return Backbone.View.extend({ 
    template: _.template(templateText), 
    initialize: function() { 

    }, 
    render: function() { 
    } 
    }); 
}); 

Das funktioniert, wenn ich lokal teste. Wenn ich dies jedoch versuche, nachdem ich meine statischen Dateien in AWS bereitgestellt habe (die dynamischen Teile der App werden auf Heroku ausgeführt), werden die Jst-Dateien nicht geladen, und es scheint, dass versucht wird, eine .js-Datei an sie anzuhängen urls.

Als Referenz hier ist meine requirejs config (von main.js)

requirejs.config({ 
    paths: { 
    //directories 
    plugins: "lib/plugins", 

    //libs 
    jquery: "lib/jquery/1.7.1/jquery", 
    underscore: "lib/underscore/1.3.3/underscore", 
    backbone: "lib/backbone/0.9.2/backbone", 
    moment: "lib/moment", // date lib 

    //require plugins 
    text: "lib/require/plugins/text", 
    domReady: "lib/require/plugins/domReady" 
    }, 
    shim: { //specify all non-AMD javascript files here. 
    backbone: { 
     deps: ['underscore', 'jquery'], 
     exports: 'Backbone' 
    }, 
    underscore: { 
     exports: '_' 
    }, 
    moment: { 
     exports: 'moment' 
    }, 
    'plugins/jquery.colorbox': ['jquery'], 
    'util/jquery.dropTree':['jquery'], 
    'util/common':['jquery'] 
    } 
}); 
+0

Mit Blick auf der require.js Dokumentation hier: http://requirejs.org/docs/api.html#config-baseUrl seine Suche, wie es ein Cross-Domain-Problem sein kann. Kann jemand bestätigen, dass dies der Fall ist? (Fühlen Sie sich frei, es als Antwort zu nehmen, wenn es definitiv ist). Wenn dies der Fall ist, ist es eine obskure Art, damit umzugehen. Ich habe zunächst einmal festgestellt, dass die Vorlagen nur auf der gleichen Domain wie die JS-Dateien liegen müssen, aber es scheint, dass sie sich auf derselben Domain wie die Seite selbst befinden muss. Sieht so aus, als müsste ich vielleicht den nächsten Schritt (alles durch den r.js-Optimierer) ausführen, bevor ich das umsetzen kann. –

Antwort

9

ich die text.js README mit Informationen nur aktualisiert, die dieses Problem erklärt. Es ist im Grunde eine Möglichkeit, Textressourcen über Domänengrenzen hinweg zu verwenden, erfordert jedoch einen Build. Es gibt eine Möglichkeit zum Überschreiben. Details hier:

https://github.com/requirejs/text#xhr-restrictions

+0

Vielen Dank für die Antwort und für alles, was Sie in Requre.js, jrburke setzen. Es ist toll. –