В Dojo или CommonJS фреймворках это не проблема.Код Javascript обычно хранится в модуле.
В нашей веб-среде IDE мы все время перезагружаем сценарии, как показано ниже (@reloadCustomMobileStack):
define([
'dojo/_base/declare',
'require'
], function(declare,require)
{
return dojo.declare("xappstudio.manager.DynamicScriptMixin", null,
{
_reloadModule:function(module,reload)
{
require.undef(module);
var scripts = document.getElementsByTagName('script');
for (var i = scripts.length - 1; i >= 0; i--)
{
var script = scripts[i];
if (script.getAttribute('src') && script.getAttribute('src').length > 0 && script.getAttribute('src').indexOf(module)!=-1)
{
script.parentNode.removeChild(script);
break;
}
}
if(reload)
{
require([module], function(_moduleIn)
{
console.error('got module' + _moduleIn);
});
}
},
reloadCustomMobileStack:function()
{
var modulesToReload = [
'cxapp/delegates/BootDelegate',
'cxapp/delegates/FormDelegate',
'cxapp/delegates/HeaderToolbarDelegate',
'cxapp/delegates/ImageResizeDelegate',
'cxapp/delegates/ServiceDelegate',
'cxapp/delegates/UrlDelegate',
'cxapp/manager/Context',
'cxapp/manager/CustomApplication',
'cxapp/manager/DataManager',
'cxapp/types/Types',
'cxapp/utils/RPCProxyPOSTEnvelope'
];
for(var i = 0 ; i < modulesToReload.length ; i++)
{
this._reloadModule(modulesToReload[i],true);
}
}
});
});
Чтобы использовать require.undef(module)
, необходимо добавить это здесь в свойКонфигурация Dojo: has:{'dojo-undef-api': true}
Конечно, это не будет работать ни с одним Javascript, поскольку Dojo / Common-JS Javascript отличается, но позволяет вам также вводить или разрешать зависимости.