Хорошая практика при работе с $.get()
Приветс. Я делаю генератор эльфийских имен, для этого вытаскиваю с сервера ajax'ом эльфийский словарь при загрузке странички, и затем работаю с ним. Есть несколько вопросов:
- Этот словарь вытаскивается прям к клиенту в браузер (в каком-либо виде)?
- Если да, то это хорошая тактика? Так вообще делают? Словарь весит 100кб.
- Если я буду вытаскивать таким же образом еще штук 5 словарей такого же размера, это нормально?
Вытаскиваю я его следующим кодом:
$( document ).ready(function(){
$.get('/data', function(data) {
window.quenyaDictionary = data;
});
});
- Нормально ли использовать
window.quenyaDictionary = data? Я читал, что лучше такого не делать. Можно ли вытащить словарь каким-то другим способом так, чтобы им можно было пользоваться за пределамиcallback function?
Спасибо!
Ответы (1 шт):
Первое не совсем понятно.
В браузер словарь поступает с результатом запроса в том виде, в котором вы его отдаете на сервере. Часто для таких целей используют формат 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 в нем можно хранить данные на клиенте, например в целях кеширования.