Last major update: 25.08.2020
- Что такое авторизация/аутентификация
- Где хранить токены
- Как ставить куки ?
- Процесс логина
- Процесс рефреш токенов
- Кража токенов/Механизм контроля токенов
/** | |
* | |
* ПАТТЕРН ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility) | |
* | |
* Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ - это поведенческий паттерн проектирования, который позволяет передавать запросы | |
* последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам | |
* и стоит ли передавать запрос дальше по цепи. | |
* | |
* Пример: у вас есть три счета (A, B, C) с разными суммами и разным приоритетом использования. Сначала проверяется A, | |
* если на нем достаточно денег для покупки, то цепочка прерывается. Иначе проверяется B, затем C. Цепь будет |
/** | |
* | |
* ПАТТЕРН СТРОИТЕЛЬ (builder (композиционный конструктор обьекта)) | |
* | |
* Паттерн СТРОИТЕЛЬ - это порождающий паттерн проектирования, который позволяет создавать сложные объекты пошагово. | |
* Строитель даёт возможность использовать один и тот же код строительства для получения разных представлений объектов. | |
* Применение: Паттерн Строитель нужен, если объект может существовать в разных вариациях или процесс | |
* инстанцирования состоит из нескольких шагов. | |
* В этом случае есть три варианта: | |
* - огромный конструктор(фабрика) со множеством if/else в котором легко запуться и который тяжело понять |
/** | |
* | |
* ПАТТЕРН КОМАНДА | |
* | |
Смысл: отделить объект-источник запроса от объекта, принимающего и выполняющего эти запросы. | |
Паттерн КОМАНДА — это поведенческий паттерн проектирования, который превращает запросы в объекты, позволяя передавать | |
их как аргументы при вызове методов, ставить запросы в очередь, логировать их, а также поддерживать отмену операций. | |
Убирает прямую зависимость между объектами, вызывающими операции, и объектами, которые их непосредственно выполняют. | |
Позволяет реализовать простую отмену и повтор операций. |
/* | |
#### Searches Algorithms #### | |
*/ | |
/* ## Linear Search ## */ | |
const array = [1,4,5,8,5,1,2,7,5,2,11] | |
let count = 0 | |
function linearSearch(array, item) { | |
for (let i = 0; i < array.length; i++) { |
/* | |
* EventBus with multiply calling | |
*/ | |
/* | |
* Based on Custom Element | |
*/ | |
function EventBus() { | |
const bus = document.createElement('fakeelement'); |
const loadScriptByPromise = (url: string) => | |
new Promise(resolve => { | |
const head = document.getElementsByTagName('head')[0] | |
const script = document.createElement('script') | |
script.type = 'text/javascript' | |
script.addEventListener('load', function listener(){ | |
this.removeEventListener('load', listener) | |
resolve(script) | |
}) | |
script.src = url |
Code is clean if it can be understood easily – by everyone on the team. Clean code can be read and enhanced by a developer other than its original author. With understandability comes readability, changeability, extensibility and maintainability.
/** | |
* | |
* ПАТТЕРН SINGLETON | |
* | |
* Паттерн Одиночка гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. | |
* | |
*/ | |
/** | |
* | |
* ПАТТЕРН НАБЛЮДАТЕЛЬ (почтальон) | |
* Несколько наблюдателей (подписчиков) могут получать данные от одного субьекта (почтальона) | |
* | |
*/ | |
class Publisher { // субьект, получает и рассылает данные | |
constructor() { | |
this.observersList = []; // реестр наблюдателей (подписчиков) |