如何防止require.js在胡子文件末尾添加.js扩展名

时间:2015-10-22 00:17:18

标签: jquery requirejs

我正在使用requireJS加载脚本。在加载.mu(胡子)文件时,require会在这些路径的末尾添加.js扩展名。然而,这只发生在IE浏览器上,而Chrome和FF工作正常。我查看了一些来源并找到了与此问题相关的答案。在其中一个案例中,它是要添加的noext插件:

require.config({
  paths: {
    'signalr-hubs': '/signalr/hubs?noext'
  }
});

可以添加以解决此问题。但是我不确定是否仅添加上述行将有助于解决问题。我是否需要添加任何依赖插件或任何东西以使其工作?

这是我的main.js:

require.config({
paths: {
    'signalr-hubs': '/signalr/hubs?noext',
    'text': 'path-to-text/text',
    'underscore': 'path-to-underscore/underscore',
    'jquery': 'path-to-jquery/jquery',
    'mustache':'path-to-mustache/mustache'
 }
});

任何想法? 谢谢!

1 个答案:

答案 0 :(得分:0)

Requirejs意味着加载js文件,这就是推测js扩展名的原因。

要加载您需要的任何其他内容类型,您需要使用插件。而不是将资源传递给requirejs,而是将其传递给插件。

由于小胡子是Handlebars的某种父亲,你可能想尝试一下requirejs Handlebars插件。

https://github.com/SlexAxton/require-handlebars-plugin

你会添加

{ 
    ...
    'hbs' : 'vendor/requirejs-handlebars/hbs'
    ...
}

到您的路径配置。

最终,将模板加载为

require(['hbs!template/something'], function(somethingFn) {
    ...
});

您看,传递给requirejs的资源是hbs(hbs.js),传递给hbs.js的资源是模板文本文件。

Hbs插件假设扩展名为.hbs,但它是可配置的。