Наилучшая практика для организации JavaScript, возвращающегося из вызовов Ajax - PullRequest
1 голос
/ 14 августа 2010

Я пишу приложение (Asp.Net MVC), которое содержит много повторно используемых компонентов.

В настоящее время я загружаю эти компоненты с помощью вызовов Ajax, используя, разумеется, библиотеку jQuery.

Эти компоненты также будут вызывать другие подкомпоненты, и поэтому все эти JavaScript возвращаются.

Итак, вопрос в том, , где я должен поставить "обратный вызов" JavaScript?

У меня сейчас что-то вроде этого:

Страница:

<html>
<head>
    <title>blah</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" ></script>
</head>
<body>

<div id="Container"></div>

<script type="text/javascript">
    $(document).ready(function() {
        $('#Container').load('SomeCrazyDomain.com/SomeComponent');
    });
</script>
</body>
</html>

Компонент:

<p>Load sub components</p><input type="button" onclick="GetSubcompent" />
<div id="SubcompentContainer"></div>

<!-- Is this Bad? -->
<script type="text/javascript">
    function GetSubcompent() {
        $('#SubcompentContainer').load('SomeCrazyDomain.com/SomeSubComponent');
    }
</script>

Подкомпонент:

<h1>I am a sub compent</h1>
<script type="text/javascript">
    function ToBeLoadedForEachAjaxCall() {
        //do something
    }
</script>

Если я оставлю все как есть, каков эффект загрузки ToBeLoadedForEachAjaxCall () для каждого вызова ajax?Удастся ли посредникам уничтожить последний ToBeLoadedForEachAjaxCall () и заменить его более новым?

Спасибо,

1 Ответ

1 голос
/ 15 августа 2010

Обычно плохая идея добавлять встроенный JavaScript в вашу разметку.Делает техническое обслуживание и отладку очень хлопотно в будущем.Вы должны создать общий js-файл, который содержит весь код JavaScript и включает его в <HEAD> или перед </BODY>.Например, есть файл js, который содержит следующее:

$('#SubcompentContainer').load('SomeCrazyDomain.com/SomeSubComponent');
function ToBeLoadedForEachAjaxCall() {
    //do something
}

В конце концов, вы можете понять, что часть этого кода очень специфична для различных разделов сайта.Возможно, вы не захотите загружать SomeCrazyDomain.com/SomeSubComponent на каждой странице.На данный момент вы можете создать js-файлы, относящиеся к разным разделам сайта.

Чтобы ответить на ваш второй вопрос.Если существует несколько функций javascript с одним и тем же именем, последняя определенная будет одной из запущенных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...