Показать сообщение отдельно
  #1 (permalink)  
Старый 23.09.2010, 11:47
Аватар для BreatheInTheVoid
Новичок на форуме
Отправить личное сообщение для BreatheInTheVoid Посмотреть профиль Найти все сообщения от BreatheInTheVoid
 
Регистрация: 01.05.2010
Сообщений: 9

Реализация функции include
Здравствуйте. Опыта в 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 не помогает((

Как заставить подобную модель работать?
Ответить с цитированием