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']
}
});
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. –