Хорошая практика при работе с $.get()

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

  1. Этот словарь вытаскивается прям к клиенту в браузер (в каком-либо виде)?
  2. Если да, то это хорошая тактика? Так вообще делают? Словарь весит 100кб.
  3. Если я буду вытаскивать таким же образом еще штук 5 словарей такого же размера, это нормально?

Вытаскиваю я его следующим кодом:

$( document ).ready(function(){
    $.get('/data', function(data) {
        window.quenyaDictionary = data;
    });
});
  1. Нормально ли использовать window.quenyaDictionary = data? Я читал, что лучше такого не делать. Можно ли вытащить словарь каким-то другим способом так, чтобы им можно было пользоваться за пределами callback function?

Спасибо!


Ответы (1 шт):

Автор решения: Red Woolf

Первое не совсем понятно.

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

Почему бы и нет? 500 кб не такой уж и большой объем, к примеру вес минифицированной (сжатой версии) Jquery составляет около 85кб, при этом вы можете включить кеширование словарей на клиенте, что позволит сэкономить трафик пользователя. Пример запроса с кешированием:

$.ajax({
  url: "/data",
  cache: true
}).done(function() {
  alert('Success');
});

Где cache: true - включает кеширование запроса

Да, не стоит использовать window.quenyaDictionary = data, вот хороший пример как сделать тоже самое без window:

let quenyaDictionary;
$( document ).ready(function(){
    $.get('/data', function(data) {
        quenyaDictionary = data;
    });
});

console.log('Данные доступны вне callback:', quenyaDictionary);

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

Так же хочу привлечь внимание к localstorage в нем можно хранить данные на клиенте, например в целях кеширования.

→ Ссылка