Здравствуйте. Опыта в js у меня пока совсем не много. В общем возникла идея в своем web приложении реализовать вот такую систему:
Допустим, что в HTML шаблоне будет:
<head>
<script type = "text/javascript" src = "/js/MyLib.js"></script>
<script type = "text/javascript" src = "/js/scripts/SomePage.js"></script>
</head>
А в файле somePage.js допустим должно быть что-то вроде:
MyLib.include('Extern.Prototype');
MyLib.include('Extern.Scriptaculous');
MyLib.include('MyLib.MyWiget.MyForm')
(function( ) {
MyLib.Scripts.SomePage = {
// js код для somePage с использованием подключенных библиотек
}
})( );
В MyLib.js есть функция include, для присоединения нужных скриптов.
Она определяет, не присоединен ли данный модуль, если нет инклудит его таким образом:
try {
document.write('<script type = "text/javascript" src = "' + finalPath + '"><\/script>');
} catch(e) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = finalPath;
document.getElementsByTagName('head')[0].appendChild(script);
}
Иерархия объектов построена в соответствии в иерархией директорий.
Получается у нас есть определенный шаблон на сервере /scripts/index.tpl
и для него js код в /js/scripts/Index.js, там MyLib.Scripts.Index = {}.
И в нем подключены библиотеки для его кода.
Но вся эта реализация летит в трубу((
Получается, что браузер присоеденяет сначало "/js/scripts/SomePage.js",
а только потом инклуды которые в нем прописаны, соответственно ничего
не работает, insertBefore не помогает((
Как заставить подобную модель работать?