2012-07-06 9 views
6

Używam rozszerzenia .jst do plików szablonów i ładuję je za pomocą tekstu requirejs! podłącz. Np.,Dlaczego requirejs próbuje dołączyć pliki ".js" do pliku .jst, które są załadowane wtyczką!

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

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

To działa puchnąć, gdy testuję lokalnie. Jednak gdy próbuję to zrobić po wdrożeniu moich statycznych plików do AWS (dynamiczne części aplikacji uruchamiane na Heroku), nie ładuje się plików .jst i wydaje się próbować dołączyć .js do ich adres URL.

Dla porównania, oto moja requirejs config (z 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

Patrząc na dokumentacji tutaj require.js: http://requirejs.org/docs/api.html#config-baseUrl jej patrząc jak to może być problem cross-domain. Czy ktoś może to potwierdzić? (nie przejmuj się, jeśli uznasz to za definitywnie). Jeśli tak jest, jest to niejasny sposób radzenia sobie z tym. Początkowo jednak, że szablony musiały być tylko w tej samej domenie co pliki JS, ale wydaje się, że muszą znajdować się w tej samej domenie co sama strona. Wygląda na to, że muszę przejść do następnego etapu (uruchamiając wszystko przez optymalizator r.js), zanim będę mógł to uruchomić. –

Odpowiedz

9

Właśnie zaktualizowaliśmy README text.js z informacją, która wyjaśnia tę kwestię. Jest to zasadniczo sposób na wykorzystanie zasobów tekstowych w różnych domenach, ale wymaga to kompilacji. Istnieje sposób na przesłonięcie. Szczegóły tutaj:

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

+0

Dziękuję za odpowiedź i za wszystko, co umieścisz w Requre.js, jrburke. To jest zajebiste. –

Powiązane problemy