Size: a a a

JavaScript.Ninja

2020 March 11

IK

Illya Klymov in JavaScript.Ninja
iCheater iCheater
Нашел проект с говорящим названием production-ready-expressjs-server
Там куча всего.
В частности вики как использовать предложенный вариант хендлинга ошибок,  ссылки с объяснениями, best practice все дела.

Что думаете на счет этого?
Этот подход ничем не отличается от go-to. Он нарушает флоу и делает его невозможным к отладке
источник

IK

Illya Klymov in JavaScript.Ninja
Использовать обработку исключений для логики - антипаттерн через который проходят все языки
источник

IK

Illya Klymov in JavaScript.Ninja
источник

VK

Vladimir Klimov in JavaScript.Ninja
Illya Klymov
Использовать обработку исключений для логики - антипаттерн через который проходят все языки
Это вроде у неста проблема, со слов Мелихова, я правильно понял?
источник

D

Dmitrii in JavaScript.Ninja
Illya Klymov
Использовать обработку исключений для логики - антипаттерн через который проходят все языки
сложно понять, что логика а что нет, ведь это очень контекстно зависимо

взять два кейса: парсинг джейсона через JSON.parse и проверка на наличие юзера в БД перед проведением транзакии

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

но если посмотреть на JSON.parse со стороны разработчика этой библиотеки/функции парсинга, то для него это логика и он должен тоже использовать if вместо throw

плюс ко всему языки как go, где хэндлинг ошибок через if err с одной стороны очень явный, с другой жутко страдает DX
источник

IK

Illya Klymov in JavaScript.Ninja
Dmitrii
сложно понять, что логика а что нет, ведь это очень контекстно зависимо

взять два кейса: парсинг джейсона через JSON.parse и проверка на наличие юзера в БД перед проведением транзакии

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

но если посмотреть на JSON.parse со стороны разработчика этой библиотеки/функции парсинга, то для него это логика и он должен тоже использовать if вместо throw

плюс ко всему языки как go, где хэндлинг ошибок через if err с одной стороны очень явный, с другой жутко страдает DX
Ваше право так считать. Я предпочитаю придерживаться мейнстрима и различать error flow и exception flow и не смешивать их
источник

R

Ruslan Kadyrov in JavaScript.Ninja
ребят кто может подсказать что за ошибка?
источник

R

Ruslan Kadyrov in JavaScript.Ninja
источник

a

artalar in JavaScript.Ninja
Illya Klymov
Этот подход ничем не отличается от go-to. Он нарушает флоу и делает его невозможным к отладке
Строго говоря - отличается, throw ограничен стеком. Это скорее походит на хождение по меткам (хотя даже с ними код чище, т.к. доступ к метке не передается по ссылке)
источник
2020 March 12

a

artalar in JavaScript.Ninja
Вы обращаетесь к переменной до ее объявления
источник

a

artalar in JavaScript.Ninja
Dmitrii
сложно понять, что логика а что нет, ведь это очень контекстно зависимо

взять два кейса: парсинг джейсона через JSON.parse и проверка на наличие юзера в БД перед проведением транзакии

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

но если посмотреть на JSON.parse со стороны разработчика этой библиотеки/функции парсинга, то для него это логика и он должен тоже использовать if вместо throw

плюс ко всему языки как go, где хэндлинг ошибок через if err с одной стороны очень явный, с другой жутко страдает DX
Есть простое правило: throw использовать при инвалидации контракта, а catch использовать только для обработки НЕПРЕДВИДЕННЫХ исключений, только лишь для изоляции работы каких-то модулей.
источник

ii

iCheater iCheater in JavaScript.Ninja
я со своей колокольни и поверхностного знания JS так и не понимаю как в итоге нужно писать.
есть 2 мнения, а как на практике их кодом реализовывать не понял.

https://github.com/iCheater/expressServer/blob/15f551990375e7ebfdda07a21a7e9da8b404495b/routes/order.js#L37
там где проверка вроде
if (!req.session.cart) {
     throw new ErrorHandler(500, 'cart is empty')
   }
если не кидать ошибку, то я предполагаю, что нужно отсылать явно res.status(500).json({msg:'cart is empty'}).
а как быть с  ошибками  которые кидает sequelize?
нужно ли отделять "ошибки" (нет коннекта к базе, нет какого-то поля в базе)
и
"ошибки валидации"(не тот тип данных )?
Как оповещать клиента об ошибках - res.status(500)?
источник

R

Ruslan Kadyrov in JavaScript.Ninja
artalar
Вы обращаетесь к переменной до ее объявления
не могу понять например в онлайн редакторе все работает а в свой проект вставляю не пашет
источник

ИЛ

Иван Литвак in JavaScript.Ninja
возможно онлайн-редактор фиксит ошибку каким-то образом. Ориентируйтесь по Вашему проекту, пахать на нем же.
источник

RC

Roman Cherepanov in JavaScript.Ninja
Ruslan Kadyrov
не могу понять например в онлайн редакторе все работает а в свой проект вставляю не пашет
Возможно, вам нужно подключить библиотеку https://cdnjs.com/libraries/jquery.scrollbar
источник

AD

Andrey Dmitriyev in JavaScript.Ninja
Привет, ребят, подскажите пож:
Как сделать вывод на консоль в правильной кодировке для кириллицы у puppeteer для кириллицы?
https://qna.habr.com/q/729815
источник

ИЛ

Иван Литвак in JavaScript.Ninja
Я подумал над слайдером и придумал немного другой вариант:
1) Размещаю картинки в ряд и прячу те, что выходят за контейнер;
2) Цепляю на родительский контейнер всех слайдеров обработчик онклика (как тут с таблицей https://learn.javascript.ru/event-delegation);
3) Если кликнули на prev\next классы, то выполняю функцию, которая прибавляет\вычитает у текущего значения elem.style.transform(transleteX()) определенное число процентов.


Нормальное решение? Я его еще не реализовал, но пытаюсь разобраться как. У него есть минус конечно, например число картинок должно быть равным в слайдерах, но это не критично в моем случае. С другой стороны данный вариант держит параметры каждого слайдера в нем и не привязан к числу слайдеров.
Думаю лучше не через поиск по классу реализовать, а через датасет.
источник

ВП

Виктор Притулюк in JavaScript.Ninja
Иван Литвак
Я подумал над слайдером и придумал немного другой вариант:
1) Размещаю картинки в ряд и прячу те, что выходят за контейнер;
2) Цепляю на родительский контейнер всех слайдеров обработчик онклика (как тут с таблицей https://learn.javascript.ru/event-delegation);
3) Если кликнули на prev\next классы, то выполняю функцию, которая прибавляет\вычитает у текущего значения elem.style.transform(transleteX()) определенное число процентов.


Нормальное решение? Я его еще не реализовал, но пытаюсь разобраться как. У него есть минус конечно, например число картинок должно быть равным в слайдерах, но это не критично в моем случае. С другой стороны данный вариант держит параметры каждого слайдера в нем и не привязан к числу слайдеров.
Думаю лучше не через поиск по классу реализовать, а через датасет.
уже отвечали ранее как сделать правильнее, далее вашу фантазию никто не ограничивает
источник

ИЛ

Иван Литвак in JavaScript.Ninja
Тот вариант сложен для меня(даже этот сложен, но я хотя бы его понимаю), я даже не понимаю какая разметка должна быть с замыканиями. Даже как мне функции эти вызывать, сами они будут или руками, статья та скудна для новичка.
Подскажите чем этот вариант хуже, тогда я смогу обратить на недостатки внимание и оценить есть ли смысл писать другой.
источник

RK

Roman Krasevych in JavaScript.Ninja
Що думаєте, безпечно зараз в єгипет летіти?)
источник