load需要没有相对路径的js模块

时间:2017-04-09 08:08:30

标签: javascript requirejs commonjs

我的目录结构如下。

|-- app.js
|-- config.js
|-- index.html
|-- js
|   |-- firstpage
|   |   `-- firstpage.js
|   |-- lib
|   |   `-- jquery-3.2.0.min.js
|   `-- secondpage
|       `-- secondpage.js
`-- require.js

app.js

define(function(require, module){
  var $ = require("jquery"),
  firstpage = require("./firstpage/firstpage"),
  secondpage = require("./secondpage/secondpage");
})

如果我在浏览器中加载index.html " firstpage"和" secondpage"正确加载。

但我正在寻找的是如下加载这些脚本,只需要名称:

  firstpage = require("firstpage"),
  secondpage = require("secondpage");

我找到了"路径"在文档中有用的属性,但是当我有大量要加载的文件并且需要为每个文件分别输入时,这似乎有点过分。

有人可以建议一个更好的方法来实现这个目标吗?

在互联网上似乎有很多噪音(因为缺乏更好的词)但是我无法缩小到使用那些的确切解决方案(还有duplicate question也似乎没有回答这个问题)

1 个答案:

答案 0 :(得分:0)

如果您的模块都在相同的目录下,您可以将baseUrl设置为包含它们的目录,然后您可以只需要具有绝对名称的模块,而不必在配置中为每个模块指定一个路径。但是,您的模块位于不同的目录下,因此您无法执行此操作。

您需要的功能相当于执行以下转换:moduleName.replace(/^(.*)$/, "./$1/$1")。不幸的是,RequireJS'运行时配置不支持这种模式匹配。如果您想避免为每个模块创建一个条目,可以编写一个自动填写paths的脚本。