Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   javascript include (https://javascript.ru/forum/project/5100-javascript-include.html)

+ASD+ 15.09.2009 13:18

javascript include
 
только начинаю программировать в JavaScript-е...поэтому не пинайте сильно. Решил организовать подключение "модулей", наподобие как в С++


<html>
	<head>
		<script type="text/javascript" src="JS/js_env.js"></script>
	</head>
	
	
	<body>
	<script>
		JEnv.include("JS/dLite.js");
		JEnv.include("JS/CImage.js");
	</script>
	   
	<img src="img/bubi.gif" id="bubi"/>
		
	<script>
		var otest = dLite.elm('bubi');
		var i1 = new CImage(otest);
		i1.SetObject(otest);
	</script>
	</body>
</html>


js_env.js
если заремлен то ф-ция include не работает Exception: CObject is not defined File: .....JS/CImage.js , как только убранно заремлевание..."модули подгружаются"

var JEnv = function () {

	
	return {
		init : function () {
				window._JEnv = 1;
			},
		include : function(script_filename) {
				var html_doc = document.getElementsByTagName('head').item(0);
				var js = document.createElement('script');
				js.setAttribute('language', 'javascript');
				js.setAttribute('type', 'text/javascript');
				js.setAttribute('src', script_filename);
				html_doc.appendChild(js);
//				alert(js.toString()); - если заремлен то ф-ция include не работает Exception: CObject is not defined File: .....JS/CImage.js 
				return false;
			}
	};
}();
JEnv.init();


CImage.js
JEnv.include("JS/CObject.js");

function CImage (element) 
{
	var _this = element;
}

CImage.prototype = new CObject();


CObject.js
function CObject(element) 
{
	
	
}

CObject.prototype			=	new XYZ();
		
CObject.prototype.capture	=	"object";


CObject.prototype.Init	=	function()
									{
										
									};

CObject.prototype.SetObject	=	function(element)
									{
										_this = element;
									};


Помогите, разобраться

Kolyaj 15.09.2009 13:34

В чем разобраться? В вашем коде?

+ASD+ 15.09.2009 13:37

Цитата:

Сообщение от Kolyaj
В чем разобраться? В вашем коде?

Почему ф-ция include перестает подгружать "модули" если заремлен alert в файле js_env.js.

Kolyaj 15.09.2009 13:48

Потому что подгрузка асинхронная, и когда есть алерт, файлы успевают подгрузиться.

+ASD+ 15.09.2009 13:51

Цитата:

Сообщение от Kolyaj
Потому что подгрузка асинхронная, и когда есть алерт, файлы успевают подгрузиться.

Я догадывался....как решить данную проблему? установкой timeout?

B~Vladi 15.09.2009 14:08

Установкой callback-функции или использованием AJAX.

+ASD+ 15.09.2009 14:25

Цитата:

Сообщение от B~Vladi (Сообщение 30191)
Установкой callback-функции или использованием AJAX.

callback-функцию в конструкторе? или в include?

Kolyaj 15.09.2009 14:34

Это вообще не очень хорошая идея, дозагружать таким образом файлы. На начальном этапе может и разберетесь, но потом проблем не оберетесь. Но если сильно, то читайте http://jsx.ru/

+ASD+ 15.09.2009 14:52

Цитата:

Сообщение от Kolyaj (Сообщение 30194)
Это вообще не очень хорошая идея, дозагружать таким образом файлы. На начальном этапе может и разберетесь, но потом проблем не оберетесь. Но если сильно, то читайте http://jsx.ru/

на самом деле очень тяжело все эт дело переварить(после С++), охото как то систематизировать, упорядочить...вообщем пока тяжело в понимании.

Kolyaj 15.09.2009 14:54

Ну тогда не с того вы начали переваривать.

+ASD+ 15.09.2009 15:58

Цитата:

Сообщение от Kolyaj (Сообщение 30198)
Ну тогда не с того вы начали переваривать.

подскажите с чего надо начинать?

Kolyaj 15.09.2009 15:59

http://javascript.ru/doctree

leha 16.09.2009 11:20

По теме http://www.artlebedev.ru/tools/technogrette/js/include/

e1f 16.09.2009 11:24

Цитата:

А дальше достаточно выполнить eval(xhttp.responseText):
Отличная идея -- eval'ить скрипт, вместо того, чтобы подключать как нормальные люди. Даешь путь джедая!

Kolyaj 16.09.2009 11:36

e1f,
eval там наименьшая проблема. Основная -- очень долго будут грузиться скрипты, причем браузер на это время зависнет.

e1f 16.09.2009 12:34

Да. Вообще, в чем смысл подхода? Доставить тем, кто пришел из сей и не может привыкнуть к хтмл-инклуду?

Kolyaj 16.09.2009 12:39

Смысл есть, но решается, конечно, не в том месте. Целью инклюдов должно быть не удобство разработки, а уменьшение запросов к серверу. Т.е. сборку нужно производить на сервере.

e1f 16.09.2009 12:54

Да, так согласен.

+ASD+ 16.09.2009 19:31

Цитата:

Сообщение от Kolyaj (Сообщение 30254)
e1f,
eval там наименьшая проблема. Основная -- очень долго будут грузиться скрипты, причем браузер на это время зависнет.

от виновника торжества...забыл уточнить "приложение" полностью локальное.

Цитата:

Сообщение от e1f (Сообщение 30259)
Да. Вообще, в чем смысл подхода? Доставить тем, кто пришел из сей и не может привыкнуть к хтмл-инклуду?

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

Цитата:

Сообщение от Kolyaj (Сообщение 30260)
Смысл есть, но решается, конечно, не в том месте. Целью инклюдов должно быть не удобство разработки, а уменьшение запросов к серверу. Т.е. сборку нужно производить на сервере.

уточнял: все - локально:)

Цитата:

Сообщение от e1f (Сообщение 30265)
Да, так согласен.

без обид....ваш диалог мне напомнил диалог 2х дипутатов из камеди..."отдохнуть тебе надо"...."не могу о народе думать надо!!... как козачку зовут? " еще раз без обид

+ASD+ 16.09.2009 19:34

Цитата:

Сообщение от Kolyaj (Сообщение 30204)

да прочитал(взял на заметку)...Дэвида Флэнагана..

Kolyaj 16.09.2009 19:53

Цитата:

Сообщение от +ASD+
А вы с сями не знакомы?

Знаком. Именно поэтому написал препроцессор, практически такой же к в С, который собирает файлы перед отправкой их браузеру, также, как препроцессор С собирает файлы перед компиляцией.

Цитата:

Сообщение от +ASD+
ваш диалог мне напомнил диалог 2х дипутатов из камеди...

Если вам неинтересно чужое мнение, не пишите на форуме. И не из камеди, а из нашей раши.

Цитата:

Сообщение от +ASD+
"приложение" полностью локальное

От мучений с асинхронностью это не избавляет.

+ASD+ 16.09.2009 20:07

Цитата:

Сообщение от Kolyaj (Сообщение 30313)
Знаком. Именно поэтому написал препроцессор, практически такой же к в С, который собирает файлы перед отправкой их браузеру, также, как препроцессор С собирает файлы перед компиляцией.

если бы приложение не было локальным, с динамическ добавляемыми эл-тами...


Цитата:

Сообщение от Kolyaj (Сообщение 30313)
Если вам неинтересно чужое мнение, не пишите на форуме. И не из камеди, а из нашей раши.

ТОЧНО!!! РАША!:) Главное, что вы поняли.А по существу-интересно мне ваше мнение...именно мнение, а не мусоленье причин задаваемых вопросов. т.е. охото получить локоничный ответ на вопрос...а не "размазанный" ответ на причину вопроса.

Цитата:

Сообщение от Kolyaj (Сообщение 30313)
От мучений с асинхронностью это не избавляет.

эт я уже понял...а пишут что выполнение однопотоковое...грусно все это..

Kolyaj 16.09.2009 20:30

Цитата:

Сообщение от +ASD+
а пишут что выполнение однопотоковое...

Однопотоковое, но неизвестно в какой последовательности.

Gvozd 17.09.2009 01:22

Цитата:

Сообщение от +ASD+
а пишут что выполнение однопотоковое

выполнение однопотоковое, но допускающее ассинхронность
http://javascript.ru/tutorial/events/timing


Часовой пояс GMT +3, время: 09:12.