【问题标题】:Using require.js to load non-AMD files and files with other than .js extension使用 require.js 加载非 AMD 文件和非 .js 扩展名的文件
【发布时间】:2012-12-16 01:05:05
【问题描述】:

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

我使用 enforceDefine 配置来确保我的实际 AMD 代码在开发过程中正常工作。

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

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

【问题讨论】:

    标签: requirejs js-amd


    【解决方案1】:

    要加载不是 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 来实现它。

    【讨论】:

    • 很好的答案,但对我的情况没有特别帮助。我应该在问题中提到我也考虑使用文本插件来加载非 js 文件。我目前正在加载您解释的非 AMD 文件,但我创建了一个临时禁用 enforceDefine 的插件,因此当文件不包含 AMD 模块时,RequireJS 不会抛出错误。我也考虑过 shim 配置,但很快就放弃了。我想即使在您事先不知道是否要加载模块的情况下它也会起作用。我只是对文档没有耐心:)
    【解决方案2】:

    您可以在末尾附加 ?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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      相关资源
      最近更新 更多