Какие задачи лучше не решать с помощью JS

Ответ

  1. Критически важная логика на стороне клиента – например, валидация платежей. JS можно обойти, поэтому всегда дублируй проверки на бэкенде.

  2. Сложные вычисления – сортировка больших массивов, обработка изображений. Это тормозит интерфейс. Лучше выносить в Web Workers или на сервер.

  3. Хранение чувствительных данных – токены, пароли. LocalStorage/SessionStorage уязвимы для XSS. Используй HttpOnly куки.

  4. Глубокая работа с файловой системой – чтение/запись файлов ограничены File API. Для серьёзных задач (например, резервное копирование) нужен бэкенд.

Пример плохого подхода:

// Ненадёжно! Легко подделать на клиенте
function processPayment(cardNumber) {
  if (cardNumber.length === 16) {
    // Отправляем платеж...
  }
}

Ответ 18+ 🔞

Да ты посмотри, что люди вытворяют, блядь! Сидят, фронтендят, и думают, что их браузер — это всемогущий комп, на котором можно весь мир перевернуть. А потом — пиздец, нахуй, и удивляются.

Вот смотри, четыре главных греха, за которые тебя любой нормальный бэкендер по ебалу отхуярит.

Первое — это когда вся логика, от которой бизнес зависит, висит на клиенте. Ну, типа, проверка платежа. Представь: ты в интернет-магазине, ввёл карту, а скрипт такой: «А, 16 цифр? Ну окей, проходи». А на сервере нихуя не проверяется! Любой школьник с консолью браузера эту проверку обойдёт и купит себе весь ассортимент за ебальник. Сервер должен быть последней и единственной инстанцией, которая говорит «да» или «нет». Всё остальное — просто для красоты и чтобы пользователя не бесить.

Второе — ебать-колотить сложные вычисления. Ну вот захотел ты на фронте десятигигабайтный JSON отсортировать или картинку в фотошопе уровня обработать. Браузер взвоет, вкладка зависнет, а пользователь уйдёт нахуй. Для такого есть или воркеры, чтобы в отдельном потоке гоняли, или вообще — на сервер отсылай. Не засирай людям компы.

Третье — святое-святых: секреты. Токены, пароли, ключи API в localStorage пихать — это просто приглашение для любой XSS-уязвимости её вытащить. Это как оставить ключи от квартиры под ковриком с надписью «Ключи тут». Для этого придумали HttpOnly куки, блядь, пользуйся!

Ну и четвёртое — работа с файлами. Да, в браузере теперь можно файлы читать, это круто. Но это не полноценная файловая система! Нельзя просто взять и сделать резервную копию всей папки «Документы» пользователя на его же жёсткий диск через JS. Для таких распиздяйств нужен серверный софт.

Вот, смотри на этот ужас, который кто-то мог написать:

// Ненадёжно! Легко подделать на клиенте
function processPayment(cardNumber) {
  if (cardNumber.length === 16) {
    // Отправляем платеж...
  }
}

Да ёпта, «отправляем платеж»! Отправил, блядь, в никуда. Это ж как надо не уважать свой же продукт, чтобы такую хуйню написать. Всё, что можно обойти — обойдут. Волнение ебать, просто.