Как правильно загружать ресурсы на сайте, сделанном в основном с помощью AJAX? - PullRequest
2 голосов
/ 06 февраля 2012

Лучше ли загружать ВСЕ мои ресурсы в моем базовом макете / представлении шаблона или непосредственно в частичном представлении, которое я загружаю в ajax?

Пример:

_layout:

[...]

    <head>
        <script src="file.js"></script>
        <link href="file.css"></link >
    </head>

[...]

ИЛИ

_layout:

[...]

    <head>
    </head>

[...]

PartView (загружается позже в AJAX):

<div>
    <script src="file.js"></script>
    <link href="file.css"></link > 
</div>

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

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

В частичном:

@{
    ViewBag.ScriptIncludes = ViewBag.ScriptIncludes ?? new List<string>();
    ViewBag.ScriptIncludes.add("script1.js");
}

В макете (_Layout.cshtml)

@if (ViewBag.ScriptIncludes != null)
{
    foreach (string url in ViewBag.ScriptIncludes)
    {
        <script src="@url" type="text/javascript"></script>
    }
}

В обычных условиях это позволяет связывать сценарии с частичным, что довольно неплохо, и это хорошая идея, если вы толькопри загрузке страницы обновляется фрагмент, который существует на странице.

На странице должны быть предварительно загружены сценарии.Вы не должны перезагружать скрипты, получая ресурс скрипта через ajax и вставляя его на страницу.В идеале вы бы не получили html поверх ajax, но некоторые люди считают это приемлемым.Вы только хотите ввести HTML на страницу, а не больше сценариев.Если у вас есть обработчики событий для элементов внутри частичного представления, рассмотрите возможность подключения обработчиков событий к контейнеру вместо элементов по отдельности.

Однако, учитывая, что вы перезагружаете потенциально любое представление, я думаю, вам лучшев том числе ваши сценарии в голове.Это гарантирует, что вы не найдете конфликтующие сценарии позже.Ваш сайт, по сути, представляет собой приложение, которое изначально загружает небольшую нагрузку, но не требует обновления.

1 голос
/ 06 февраля 2012

Я думаю, это зависит от вашего контекста.скажем, если вы хотите иметь ресурс, который нужен для всех страниц (просмотров), лучше, если вы поместите их в макет.И снова, если у вас есть ресурс, очень специфичный для представления, вы можете загрузить их в представления.
И убедитесь, что вы используете URL-помощники для получения URL ресурсов.В противном случае у вас будут проблемы после развертывания.

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