Хороший метод практики для загрузки JavaScript через ajax

Отказ от ответственности: Я довольно плохо знаком с Ajax!

Я озирался, и я не уверен который метод использовать для загрузки JavaScript с помощью ajax.

Я использую ajax для запроса страниц, что каждый требует их собственных 6-10 сокращенных методов. Всего будет, возможно, 5-6 из этих страниц, таким образом, приблизительное общее количество 35 + методы.

Я предпочел бы получать доступ к необходимому JavaScript как к каждой странице, которая требует, чтобы это загрузилось.

Я видел несколько методов, и я не уверен, какой лучше всего удовлетворил бы моим потребностям:

  1. Включайте пустой элемент сценария в голову и управляйте атрибутом src через. DOM.

  2. Создайте новый элемент сценария через. DOM и добавляют его к document.body (это звучит как то же как как № 1).

  3. jQuery (который я уже использую) имеет ajax getScript () метод.
  4. Я ничего не считал об этом, но я могу просто включать элемент сценария как часть ajax ответа?

Поскольку я плохо знаком с ajax и веб-разработкой в целом, мне любопытно относительно взлетов и падений каждого метода, а также любых методов, которые я пропустил.

Некоторые проблемы: - будет кэшируемая копия использоваться, или будет сценарий загружать каждый раз, когда запрос ajax выполнен. Обратите внимание, что сценарии будут статичны. - совместимость браузера. Я использую Chrome, но это приложение будет использоваться через версии IE> = 7, а также Firefox.

5
задан ecoutu 16 July 2010 в 01:54
поделиться

3 ответа

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

$.ajax({
    cache: true,
    dataType: "script",
    url: "your_js_file.js",
    success: yourFunction
});
6
ответ дан 14 December 2019 в 08:39
поделиться

Используйте getScript. По сути, он делает то же самое, что и второй метод, но вам не нужно беспокоиться о том, как прослушивать загрузку в различных браузерах (в основном IE).

Ответ AJAX - это просто текст в DOM. Он не имеет никакого эффекта, пока вы каким-то образом не вставите его в DOM.

0
ответ дан 14 December 2019 в 08:39
поделиться

Поскольку все остальные ответы здесь просто говорят "используйте jquery" без какой-либо дополнительной информации/объяснения/обоснования, вероятно, стоит действительно посмотреть на другие варианты, которые вы упомянули.

  • Вариант#1

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

  • Вариант#2

    лучше, так как вы можете добавить второй элемент скрипта в DOM до того, как первый закончит загрузку, не влияя на загрузку/выполнение.

  • Вариант#3

    рекомендованный всеми до меня, подходит, если вы находитесь в среде jQuery и уже загружаете (довольно тяжелую) библиотеку jQuery для других целей - загружать ее только для этого явно излишне. Также стоит отметить, что $.getScript() и $.ajax() оба используют eval() для выполнения скрипта. eval() не является "злом" в данном контексте, поскольку это надежный источник, но, по моему опыту, иногда бывает немного сложнее отлаживать eval()-код.

  • Вариант#4

    афаик невозможен.

  • Вариант#5

    рекомендованный Ником Крейвером в первом комментарии OP, это то, что я бы выбрал, bbh - если скрипты статичны, как вы говорите, кэширование будет более эффективным, чем несколько HTTP-запросов. Вы также можете рассмотреть возможность использования cache.manifest для агрессивного кэширования, если вас особенно беспокоит пропускная способность: http://www.html5rocks.com/tutorials/appcache/beginner/

1
ответ дан 14 December 2019 в 08:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: