一般来说,RequireJS 不是为重新加载模块而设计的。
但是,如果您仔细设计您的应用程序,您可以让 RequireJS 重新加载一些模块。这是一个例子:
<body>
<p id="contents">Nothing loaded.</p>
<button id="reload">Reload</button>
<script>
require.config({
baseUrl: "./js",
paths: {
jquery: '//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min',
}
});
require(["jquery"], function ($) {
var $contents = $("#contents");
function reload() {
require.undef("text!../file.html");
require(["text!../file.html"], function (file) {
$contents.empty();
$contents.append(file);
});
}
$("#reload").click(reload);
});
</script>
</body>
require.undef
关键是在重新加载之前调用取消定义模块。
我有一个说明整个事情的回购。如果您编辑 file.html 文件并点击“重新加载”按钮,该段落的文本将替换为文件的内容。要获得一个功能,您可以从控制台调用,只需将其分配给window
(例如window.reload
)的字段。
该按钮实际上应该被称为加载/重新加载(因为它执行初始加载和重新加载)但我不打算修复它。