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 = []; // реестр наблюдателей (подписчиков) |