使用require.js加载非AMD文件和扩展名不是.js的文件

时间:2012-12-16 01:05:05

标签: requirejs js-amd

是否有任何干净的方法来加载除js扩展名以外的文件而不是AMD内容?

我使用 enforceDefine 配置确保我的实际AMD代码在开发过程中有效。

到目前为止,我已设法将 enforceDefine 设置为false的插件放在一起,因此我可以加载第三方库:require(['noamd!handlebars'])。这对我来说似乎不太讨厌,但我想知道是否有更好的方式。

我目前正在测试 noext 插件,它可以完成它的工作,但也是一种hacky方式。我注意到它将noext参数两次应用到网址(test.txt?noext=1&noext=1)。我可以忍受这一点,但最佳的是我想摆脱所有额外的参数。可以这样做吗?

2 个答案:

答案 0 :(得分:7)

要加载非JS的文件(例如.handlebars.mustache),the text plugin符合您的目的。

要加载普通的js文件,可以使用RequireJS作为脚本加载器:

require(['full/path/to/file.js'], function(){
    // Fired when file is loaded but if non AMD
    // no value will be passed to this function
});

如果您希望将非AMD文件视为模块,则you can use the shim config来实现它。

答案 1 :(得分:3)

你可以在末尾添加一个“MEH = BLAH”来阻止.js追加

例如

requirejs.config({
    paths: {
        "dynamicstripconfig": "../php/domain/config.php?dynamic=1"
    }
});

此外还有一个插件,但不支持路径 - > https://github.com/millermedeiros/requirejs-plugins

添加了修复路径支持的问题 - > https://github.com/millermedeiros/requirejs-plugins/issues/47

如果您的文件实际上不是动态js文件,那么请使用文本插件 - > https://github.com/millermedeiros/requirejs-plugins