Programmer Way | IT и фриланс
@ProgrammerwayIT
26 12K
localStorage.setItem("theme”, ”light”), если ещё не был созданlocalStorage.getItem(“theme”) и если оно равно строке “light”, то обращаемся к localStorage.theme = “dark”, если нет, то наоборот ставим значение light
Хотя localStorage хранит только строки, мы всегда можем передать туда json, только не забывайте при получение объекта из localStorage делать JSON.parse. Также советую по посмотреть видео на эту тему:
template, он не рендерится в DOM дереве и служит для взаимодействия с js, это нужно было для того, чтобы для разных языков были разные попапы. Я, конечно, мог поместить верстку попапа в js, но тогда менять текст кнопок для каждого языка было бы затруднительно, а подключать react по мелочи тоже не хотелось. Поэтому решил для более удобного взаимодействия с template использовать библиотеку Mustache.js, она позволяет легко вставлять данные в свой шаблон и удобно работать с объектами. Эта библиотека отлично подходит для того, чтобы быстро получить готовый html, основанный на каких либо данных, тоже самое можно было бы сделать и через нативный js, через тот же insertAdjacentHTML, но мне было быстрее и удобнее использовать мustache, кому интересно почитать про библиотеку, оставлю статью ниже
#, что привело к неисправной работе webpack
new SmoothScroll туда передаете нужный вам селектор, например все ссылки a[href*="#"] и объект со всеми настойками, по-умолчанию speed, это количество миллисекунд, необходимое для прокрутки на 1000 пикселей, но если вам надо, чтобы прокрутка занимала одинаковое количество времени, то установите speedAsDuration как true, еще есть большое количество типов анимации и событий, подробнее:
function написать async, теперь мы можем перед асинхронной операцией прописать await и присвоить результат в соответствующую переменную, например response, и весь следующий код будет выполняться только после того, как выполниться асинхронный код. Теперь мы можем работать с переменной response так, как будто это обычная переменная и мы пишем синхронный код, если мы хотим после этого сделать еще один запрос, то нам нужно всего лишь еще раз создать переменную и написать await перед запросом. Вот небольшое видео про работу async await:
new Promise() поместить функцию(executor), ее аргументы resolve и reject — колбэки. Внутри этой функции мы делаем различные асинхронные действия, по завершению которых, в зависимости от результата, вызываем один из колбэков. Если мы успешно получили результат, то вызываем resolve и передаём туда наше значение. Если произошла ошибка(сервер не ответил или ответ не совпал с тем, что мы ожидали), то мы вызываем reject с объектом ошибкиthen, который нужно вызвать у промиса и, по его завершению, мы получим доступ к данным, которые были переданы в resolve, если мы хотим обработать ошибку, то используем метод catch, куда первым аргументом передается ошибка. Если нам нужно в любом случае сделать какое-то действие, то можно использовать метод finally, он отработает в любом случае, это хорошо подходит для очистки, например остановка загрузки, так как нам не так важен результатPromise.then тоже возвращает промис, поэтому мы можем вызвать на нем ещё один then, что позволяет нам создавать большие цепочки асинхронных запросов, избегая вложенности new Promise, этим занимаются библиотеки для работы с асинхронностью, например axios, но нужно знать то, что находиться под капотом у всех этих библиотек, чтобы грамотно с ними работать, ведь можно на каждую задачу создать по библиотеке/фреймворку и спокойно их использовать, но программистам платят не за знание определённых синтаксических конструкций, а за решения и то, насколько они верные, зависит от знания тонкостей того или иного языка или библиотеки, ну и конечно же мышления. Приложу статью, в которой будет более детально рассказано про работу с промисами, советуют прочесть
background: currentColor тогда нужно будет обращаться только к родителю. Либо если внутри ссылки есть svg иконка, имеющая тот же цвет, что и у текста, то для самой иконки нам нужно написать fill: currentColor, таким образом мы сокращаем код и не повторяемся
Платформа использует файлы cookie для авторизации и сохранения настроек. Продолжая работу, вы соглашаетесь с нашей Политикой использования cookie.