這個答案類似於user1903890,但我認爲它很容易遵循使其他實現。
基本上我們必須在init函數中封裝index.html中指定的main.js requirejs控制器。一旦它的定義,那麼我們稱這個初始化函數給init requirejs正常
function init_requirejs(){
console.log("--------------------------- INIT requirejs:");
require([ "helpers/util"], function(util) {
var count=0;
$('#content').empty();
$('#content').append("<input type='button' id='increment_button' value='click to increment the counter'>");
$('#content').append("<h1 id='the_counter'>0</h1>");
$('#content').append("<br><br><input type='button' id='init_button' value='click to initialize requirejs files'>");
$('#increment_button').on('click', function(){
count++;
$('#the_counter').text(count);
});
$('#init_button').on('click', function(){
end();
init_requirejs();
});
util();
});
};
init_requirejs();
我們還需要和使用require.onResourceLoad功能來存儲所有參加requirejs應用
var all=[];
require.onResourceLoad = function (context, map, depArray) {
all.push(map.name);
};
文件我們需要一個復位requirejs配置功能刪除requirejs的實際情況,我們將與require.undef功能做到這一點:
function end(){
console.log("--------------------------- END requirejs:");
all.map(function(item){
require.undef(item);
});
};
這一切!
後來從我們的代碼中,我們可以強制重載應用程序,而無需重載瀏覽器只調用end()函數和init_rquirejs()函數。例如jQuery的單擊事件中:
$('#init_button').on('click', function(){
end();
init_requirejs();
});
演示的代碼是 https://github.com/juanantonioruz/requirejs-force-reload
和在線版本 https://dl.dropboxusercontent.com/u/8688858/requirejs-force-reload/project.html
我希望這個解決方案爲你工作!
胡安
嗨,秦,你檢查我的迴應?我認爲它解決了你的問題,不是嗎? – tangrammer 2013-10-21 12:11:49