为什么requirejs试图将“.js”附加到加载了!text插件的.jst模板文件中

Why is requirejs trying to append a '.js' to .jst template files that are loaded with the !text plugin?

本文关键字:插件 text jst 文件 加载 requirejs js 为什么      更新时间:2023-09-26

我对模板文件使用.jst扩展名,并使用requirejs文本加载它们! 插件。 例如,

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

当我在本地测试时,这会膨胀。 但是,当我在将静态文件部署到 AWS(应用程序的动态部分在 Heroku 上运行)后尝试执行此操作时,它无法加载 .jst 文件,并且似乎试图将.js附加到其 url。

作为参考,这是我的需求js配置(来自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']
  }
});

我刚刚更新了文本.js自述文件,其中包含解释此问题的信息。它基本上是一种跨域使用文本资源的方法,但它需要构建。有一种方法可以覆盖。详情请见此处:

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