RequireJS:加载特定扩展时始终使用插件

时间:2018-02-06 15:48:57

标签: javascript requirejs

当找到某个扩展名时,有没有办法将RequireJS配置为始终使用特定插件?

我想避免手动调用插件modal-open

我正在寻找某种类型的WebPack配置,但我在文档和网络上都没有好运

require('es6!myModule')

1 个答案:

答案 0 :(得分:0)

RequireJS对您提供的支持非常有限。它在“模式匹配”一词的一般意义上没有任何类型的模式匹配功能。特别是,没有办法告诉RequireJS匹配具有特定扩展名的文件。如果您必须坚持使用RequireJS,并且必须获得该插件的模块集是在构建应用程序时已知的固定集,您可以生成如下地图:

map: {
  "*": {
    foo: "plugin!foo",
    bar: "plugin!bar",
    // ...
  }
}

"*"实际上不是一个glob或任何一种复杂的模式匹配。它更像是一个编码关键字,意思是“任何模块”。

我有一个用TypeScript编写的应用程序,我必须能够通过RequireJS运行并能够通过Webpack进行处理。我有一些基本上是JSON数据的模块。 TypeScript编译器不喜欢在模块导入中查看插件名称。因此,为了让所有内容顺利运行,我将插件名称保留在TypeScript代码中,并使用上面的map让RequireJS为需要它的模块使用json插件。我手动管理地图,因为它只有几个文件。

SystemJS支持加载AMD模块,并且具有比RequireJS更复杂的配置功能。 RequireJS称之为“插件”的内容在SystemJS中称为“加载器”。您可以使用meta选项将加载程序与文件模式相关联:

{
  baseURL: "lib/",
  paths: {
    // ...
  },
  meta: {
    "something/*.js": {
      loader: "some-loader",
    }
  }
}