Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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 не помогает((

Как заставить подобную модель работать?
Ответить с цитированием
  #2 (permalink)  
Старый 23.09.2010, 13:12
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Динамическая подгрузка (или include) скриптов нужна в исключительных случаях, в подавляющем большинстве лучше на стороне сервера объединять скрипты в один файл, сжимать и отдавать клиенту, так как более приоритетным является снижение количества запросов, а не нескольких килобайт отдаваемых статичных данных.

То есть делаете запрос, например, на:
<script type = "text/javascript" src = "/js/alljs.php"></script>

А этот alljs.php собирает лежащие в директории /js/ файлы в кучу:
header('Content-type: text/javascript; charset=utf-8;');
header('Expires: ' . date('r', mktime(0, 0, 0, date('m'), date('d') + 1, date('Y'))) );

echo file_get_contents('MyLib.js') . PHP_EOL . PHP_EOL;
echo file_get_contents('prototype.js') . PHP_EOL . PHP_EOL;
echo file_get_contents('scriptaculous.js') . PHP_EOL . PHP_EOL;
echo file_get_contents('MyLib.MyWiget.MyForm.js') . PHP_EOL . PHP_EOL;
echo file_get_contents('SomePage.js') . PHP_EOL . PHP_EOL;

Каждый раз объединять файлы конечно только на этапе разработки нужно.
Ответить с цитированием
  #3 (permalink)  
Старый 23.09.2010, 13:13
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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

Спасибо за советы, приму во внимание.
Ответить с цитированием
  #5 (permalink)  
Старый 23.09.2010, 14:23
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

на стадии разработки удобно иметь подключение всех файлов по отдельности. http://mojura.110mb.com/i-component/...n/-/-/index.js
__________________
.ня
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть ли на JavaScript аналог PHP функции include?) FirstFrost Общие вопросы Javascript 3 13.07.2010 10:13
Специфические функции и свойства различных браузеров onejsquestion Javascript под браузер 3 28.06.2010 10:54
Реализация функции JavaScript, меняющей содержимое ячеек таблицы по событию onchange BOJIKOJIAK Events/DOM/Window 1 24.05.2010 05:50
Реализация функции Drag $ drop parikmaher534 Javascript под браузер 2 12.05.2010 15:35
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03