Search
Write a publication
Pull to refresh
1
0
Алексей Дорохов @akeinhell

Web-погромист

Send message

Во фронтенде новые технологии привезли - тапаСкрипт и редукторы?

Пожалуйста, прекратите использовать кликбейт в заголовках

Intersection observer - форсится пару лет точно в интернетах

Clipboard - в мдн сразу упоминается

Full screen - множество публикаций с ним.

Лучше сразу проводить параллель с поддержкой и полифилами

Если вам дико не хватает питон-style во фронте
попробуйте coffee script
Не пробуйте, он давно уже мертв
На фронте код увеличивается за счет полифилов и транспиляции для поддержкой старых браузеров
В секцию реакта попала ссылка про vue
— Vue без View — Введение в Renderless компоненты
Похоже, что вы совсем не знакомы с async/await

похоже вы не знакомы с отладкой и трейсами которые он порождает :-)

Я сам все пишу уже на async/await, но на бою осознать где именно упало не всегда является тривиальной задачей
Сразу видно человек не пишет на реакте и сравнивает с ним свой любимый vue

На счет реакт-роутера есть очень логичное решение.
делаете HOC, который инкапсулирует в себя всю логику с проверками на авторизацию, ACL и т.д.

А потом очень просто это все подключаем
    <Route path="/" exact component={PostList} />
    <Route path="/edit/:id" component={WithACL(PostEdit, {allow=['admin', 'author']})}  />
    <Route path="/delete/:id" component={WithACL(PostDelete, {allow=['admin']})}  />
    <Route path="/create/" component={WithACL(PostCreate, {allow=['author']})} />


при этом вместо редиректа, мы можем спокойно показать форму логина на приватном роуте

Во wrike на внутренние хакатоны только работников берут или с улицы тоже можно придти поучаствовать?

1. выполнить `chown` для созданных файлов внутри контейнера / создавать файлы не в контейнере
2. --volume $HOME/.ssh/id_rsa:/root/.ssh/id_rsa:ro
developer.mozilla.org/ru/docs/Web/API/NodeList

Однако некоторые старые браузеры на данный момент все еще не поддерживают NodeList.forEach().
уже все есть, зачем писать велосипеды?
Array.from(document.querySelectorAll('a'))
    .forEach(el => {
       el.classList.add('test');
       el.classList.remove('test');
   })


+ меня бесит порядок аргументов в jquery в функциях ex.: each(index, element)
Для этих целей можно использовать и родные эвенты

document.addEventListener('test', (...data) => console.log('test', ...data))
document.dispatchEvent(new CustomEvent('test', {detail:'your_custom_data'}))
document.dispatchEvent(new Event('test'))

developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events
Несложно заметить, что структура этих двух примеров очень похожа. Однако, когда отпала необходимость в промисах, общий объем кода уменьшился. При написании более крупных приложений это заметно ещё сильнее. Серверный код DuoCMS 5 состоит из примерно 15609 строк на JavaScript. Объём кода DuoCMS 6 близок к 10186 строкам. На данный момент DuoCMS 6 имеет больше возможностей, для реализации которых потребовалось на 30% меньше кода. При этом, благодаря отсутствию промисов, этот код гораздо легче читать и поддерживать.


Можно и порефакторить этот js и получим тоже — читаемый код и уменьшение кодовой базы
const router  = require('express').Router();

app.get('/', (req, res) => res.send('Hello World!'));

app.post('/api/users', async (req, res) => {
  const {body} = request;
  if (!body) {
    return res.send("no user provided")
  }
  
  await UserService.save(request.body);
  res.send('user saved');
})
Не рассматривали уже готовые решения?
К примеру очень хороший вариант socketo.me/docs

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity