Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
JSON формат передачи данных, глубокое клонирование объектовСодержание книги
Поиск на нашем сайте JSON – JS object notation текстовый формат объмена данными служит для передачи и хранения данных. Набор пар ключ-значение, все строки должны быть в двойных кавычках. В качестве объекта могут быть {} [] n s &&|| null можно получить небольшую не релеционную базу данных. Маленький вес файлов; простота чтения файлов До JSON использовался язык XML
При помощи JSON создаются глубокие копии объекта
AJAX и общение с сервером Нагляндеый пример фильтры в интернет магазине, когда изменяется содержание страницы без полной перезагрузки страницы, тут изменяется контент подгружаемый с сервера Asinhronius JS and XML – всегда работает ассинхронно, но можно изменить этот параметр вручную. 'use strick';
const inputRub = document.querySelector('#rub'), inputUsd = document.querySelector('#usd');
inputRub.addEventListener('input', () => { const request = new XMLHttpRequest(); //open собирает настройки, которые помогут сделать запрос он принимает в себя несколько request.open('GET', 'js/current.json'); // методов(method, url, async, login, pass) //HTTP методы GET & POST, url - куда посылать запросы. Важный момент - запросы посылаем из html файла //страничка работает в браузере и на ней работают скрипты путь должен формироваться относительно // index.html аргументы async, login, pass необязательны // Когда отправляем запрос нужно сказать что именно мы отправляем. Какая информация? В чём она закадирована? // делается это для того, чтобы трансферные протоколы чётко понимали что они передают и когда они приходит на сервер // сервер понимает что он точно принимет в себя - это json файл или изоброжения и т.п Для этого существуют HTTP заголовки // заголовок для передачи JSON request.setRequestHeader('Content-type', 'application/json; charset=utf-8'); //когда все приготовления готовы можно отправить запрос при помощи метода send, данный метод зависит от метода // который используется request.open GET/POST. Когда отправлем GET запрос мы просто запрашиваем информацию - по факту // мы ничего не отправляем на сервер если же POST запрос, то отправляются данные и метод send может принимать body // request.send(body), body - данные которые уходят на сервер, он существует только в POST и других методах, которые // отправляют данные на сервер. В GET body не будет request.send(); // после трех методов open, setRequestHeader, send мы отправили запрос и дальше с ним нужно что-то делать. Данная операция ассинхронна // серевер может ответить через 3 мс, так и через 5 сек. Зависит это от сервера и качества интернет соединения // это разобрали методы объекта XMLHttpRequest. Теперь поговорим о свойствах этого объекта // получаем ответ от сервера и начинаем использовать эти данные // status - свойство показывающий статус запроса 404/0/200/ и т.п // statusText - текстовое описание ответа от сервера // response - ответ от сервера, в котором лежит ответ который задал Backend разработчик, то что мы должны использовать на клиенте // readyState - текущее состояние запроса https://developer.mozilla.org/ru/docs/Web/API/XMLHttpRequest/readyState // события которые относятся к объекту XMLHttpRequest // loadStart // progress // timeout request.addEventListener('readystatechange', () => { //readystatechange событие которые отслеживает статус нашего запроса в данный текущий момент if (request.readyState === 4 && request.status === 200) { console.log(request.response); const data = JSON.parse(request.response); inputUsd.value = (+inputRub.value / data.current.usd).toFixed(2); } else { inputUsd.value = "Что-то пошло не так"; } });
}); 'readystatechange' change on ‘load’ and revome (request.readyState === 4 &&)
Список кодов состояния HTTP Заголовки HTTP Использование Объектов FormData Использование XMLHttpRequest XMLHttpRequest Из FormData в JSON
Promise (ES6)
+ resolve() – работает с блоком кода then(); - reject() - работает с блоком кода catch(), обычно прописывается в конце цепочки; console.log('Запрос данных');
const req = new Promise(function(resolve, reject) { setTimeout (() => { console.log('Подготовка данных...'); const product = { name: 'TV', price: 2000 }; resolve(product); // при положительном исходе будет исполнена фунция resolve = req.then }, 2000); }); req.then ((product)=> { const req2 = new Promise((resolve, reject) => { setTimeout(() => { product.status = 'order'; resolve(product); }, 2000); }); req2.then(data => { console.log(data); }); });
Огромное приимущество перед calback - можно возвращать Promise по цепочке req.then ((product)=> { return new Promise((resolve, reject) => { setTimeout(() => { product.status = 'order'; resolve(product); }, 2000); }); }).then(data => { console.log(data); });
Есть блок кода finally() который ставиться в самом конце и под этим подразумеватся то, что обяательно должно выполнится в не зависимости от resolve и reject
https://learn.javascript.ru/promise-basics https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise И не обязательно постоянно использовать promise console.log('Запрос данных');
const req = new Promise(function(resolve, reject) { setTimeout (() => { console.log('Подготовка данных...');
const product = { name: 'TV', price: 2000 };
resolve(product); // при положительном исходе будет исполнена фунция resolve = req.then
}, 2000); }).then ((product)=> { return new Promise((resolve, reject) => { setTimeout(() => { product.status = 'order'; resolve(product); }, 2000); }); }).then(data => { return new Promise ((resolve, reject) => { setTimeout(() => { data.private = false; console.log("Go go go!"); resolve(data); }, 3000); }); }).then(body => { console.log(body); reject(); resolve(body); }).then(body => { body.change = 'Yes'; return body; }).then((body) => { console.log(body); }).catch(()=> { console.error('we have a problem'); }); У promise есть два метода Promise.all () – глобальный объект, пруимущество в том, что пока все промисы указанные в массиве не будут выполнены, он не успакоится и потом только что-то будет делать Promise.race () – выполняет своит действия, когда самый первый промис отработал const test = time => { return new Promise(resolve=> { setTimeout(()=> resolve(), time); }); };
// test(1000).then(()=>console.log('1000ms')); // test(3000).then(()=>console.log('3000ms'));
Promise.all([test(1000), test(3000)]).then(()=>console.log(`Time`)); Через 3000ms выведет сообщение Time, как бы говоря, что все промисы выполнены
Promise.race([test(1000), test(5000)]).then(()=>console.log(`Time`)); Надпись Time всплывёт через 1000ms т.к дынный промис самый быстрый, но завершиться работа через 5000ms;
Fetch API Объединеи промисов и общения с сервером API – aplecation program intereis интерфейс с которым я моу работать DOM API – doqument.quareSelector() и т.п Fetch API – построяна на промисах и помогает общаться с сервром JSONPlaceholder – готовок фейковое API Это GET запрос fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(json => console.log(json)); response.json() – в данном API это JSON.parce(), т.е с сервера приходит ответ(response) в виде JSON строки, а response.json() преобразует его в объект Это POST запрос fetch('https://jsonplaceholder.typicode.com/posts', { method: 'POST', body: JSON.stringify({name: 'Alex'}), headers: { 'Content-type': 'application/json' } – обязательные элементы }) .then(response => response.json()) .then(json => console.log(json));
NPM NPM – Node pacet manager кусочки кода призванные облегчить работу Команды npm init установит package.json sudo npm I json-server –g глобальная установка для мак npm I json-server локальная установка Если вы устанавливаете его локально в своем проекте, используйте npx для его запуска npx json-server --watch db.jsonnpm install -g json-server – глобально. Запуск json-server db.jsonnpm i – если у скаченного репозитория есть package.json, то данная команда поможет установит все необходимые для работы в этом проекте npm пакеты типы пакетов npm I json-server --save-dev флаг подраз. Что это для разраб (зависимость разработки) npm I json-server --save для работы проект в нутри костяк прил и веба (JQ/React…) json-сервер не распознается как внутренняя или внешняя командаОшибка «Невозможно загрузить файл ….ps1https://github.com/typicode/json-server
|
||||||
Последнее изменение этой страницы: 2021-07-18; просмотров: 84; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.170.80 (0.01 с.) |