每当我尝试使用 RequireJS 加载页面特定脚本时,它都会告诉我 Builds
未定义。
<script type="text/javascript">
requirejs(["../../js/builds/builds"], function(Builds) {
console.log(Builds);
Builds.createFunc(window.location.href.substring(window.location.href.lastIndexOf("/") + 1))
});
</script>
js/builds/builds.js
"use strict";
define(["../../classes/builds/builds"], (Builds) => {
const Create = (classID) => {
return new Builds(classID);
}
return {
createFunc: Create
}
});
classes/builds/builds.js
"use strict";
define(() => {
return class Builds {
constructor(arg) {
this.arg = arg;
this.init();
}
init() {
console.log("Build loaded with class ID " + this.arg);
}
}
});
我让它工作的唯一一次是将 Create
绑定(bind)到 window
时,但这不是我想要做的。我希望能够访问页面脚本中的 Builds
参数。
文件夹结构:
resources (where the source files are, I'm compiling them with WebPack)
resources/js/app/modules/builds/builds.js
编译为 public/js/builds/builds.js
public folder
配置:
requirejs.config({
baseUrl: "js/lib",
paths: {
app: "../app"
}
});
我在这里缺少什么?
最佳答案
我得到了它的工作,但我把除index.html之外的所有文件都放在一个脚本文件夹中。四个 .js 文件:require.js、main.js、builds.js 和 class.js。但我没有使用webpack。我只是测试你的代码是否正确(我以前从未使用过 requireJS)。
索引.html:
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script data-main="./scripts/main" src="./scripts/require.js"></script>
</body>
</html>
main.js:
console.log(Builds);
Builds.createFunc(window.location.href.substring(window.location.href.lastIndexOf("/") + 1))
});
构建.js:
"use strict";
define(["./class"], (Builds) => {
const Create = (classID) => {
return new Builds(classID);
}
return {
createFunc: Create
}
});
class.js:
"use strict";
define(() => {
return class Builds {
constructor(arg) {
this.arg = arg;
this.init();
}
init() {
console.log("Build loaded with class ID " + this.arg);
}
}
});
关于javascript - RequireJS 中未定义必需参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57832438/