Найти тему

Практика Ruby №24(HTTP, vanila.js)

Оглавление

Все материалы для конспекта взяты с rubyschool.us

Протокол HTTP

вводим доменное имя -> превращается в IP-адрес -> браузер подключается к порту (по умолчанию 80),если не задан SSL

80 порт - http

443 порт - https

самый простой http-запрос: GET / HTTP / 1.1

что происходит после того как вы вводите URL в браузер?

браузер проверяет кеш (если объекты есть в кеше то ничего не делается) кеш - хранилище

браузер запрашивает OS

OS делает запрос DNS и преобразовывает доменное имя в ip адрес

открывает TCP соединение к серверу

отправляет http запрос

получает http ответ и может закрыть соединение, или использовать его для другого запроса

проверяет на редиректы

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

далее браузер декодирует ответ

браузер определяет что делать с ответом

выводит "картинку"

выводит "диалог" загрузки

В кратце: посылает запрос - получает ответ - закрывает соединение

Stateless - "бессостояние", когда вы отправляете запрос и получаете ответ сервер никак не определяет вас, сам сервер не видит разницы между разными пользователями, это происходит на уровне приложения

Протокол http - statless протокол, в http соединение "не держится"

vanila.js - обыкновенный JavaScript (шутка)

function something()
{
alert('Hello')
}

функция вызывается по хендлеру, добавляем тегу кнопки атрибут onclick="something()"

<script>
function something()
{
alert('Hello!');
}
</script>

чтобы не писать это на каждой странице создаем js файл прописываем там функцию и подключаем файл на странице с помощью тэга

<script src="путь_к_файлу"></script>,

если нужно чтобы работало для всех, прописываем путь в layout.erb

Определение переменной

var x = 1

переменные будут инициализироваться заново при обновлении страницы

Сохранять счетчик из JS

Modernizr - фреймворк JS, не расширяет JS, расширяет его там где HTML5 не работает

localStorage - позволяет сохранять данные локально (Для HTML5) ограничение на 5 Мб

таким образом не нагружаем ресурс сервера, все значения сохраняются у пользователя

localStorage - это хэш

// получаем значение из localStorage
var x = window.localStorage.getItem ('aaa');
// увеличиваем это значение на 1
x = x + 1;
// устанавливаем значение ключа на х
window.localStorage.setItem('aaa', x);
alert(x);

В данном случае выявится баг:

когда мы определяем переменную x, она имеет тип - строка, соответственно прибавлять 1 он будет к строке, выглядеть это будет как обыкновенная конкатенация (склеивание строк)

В JS это можно исправить умножив x на 1

seed database - наполнить базу данных первичными значениями