Как стать автором
Обновить

Комментарии 11

Довольно жесткий отбор и мощная подготовка докладов. А в топ-10 попадает еще и саоме лучшее из этого. То есть, это не удача, а скорее — хитрый, тщательно продуманный план.
не совсем представляю, как из Java на бэкенде напрямую работать с DevTools-протоколом — с этой темой нужно срочно разбираться.


Рекомендую посмотреть на проект github.com/webfolderio/cdp4j (правда он под AGPL лицензией и вроде как они хотят денежку, если нужно вставлять в проприетарщину). Мой опыт говорит за то, что для нужд парсинга WebDriver не годен, нужно работать с DevTools Protocol.
Я видел cdp4j, и AGPL для меня это блокер. Можно было бы пережить GPLv2, но точно не AGPL3.

Интересно, насколько просто или сложно напилить свой бридж.

Кстати, интересно, запустится ли Puppeteer на Nashorn? Это извращение, но жить вполне можно.

Ещё, уже есть поддержка JS в Graal, но оно пока не open source.
Ну так спросить у ребят, какую они хотят денежку за использование библиотеки — может, вполне разумную.

Я делал свой драйвер для DevTools, но сейчас обкатываю решение на cdp4j, докидав в него под себя пуллреквестов. Основная проблема делать свой драйвер DevTools — скудность документации (по состоянию на осень 2017). Но если нужно дёргать только что-то конкретное, пару методов, то сделать можно. Там асинхронный обмен — шлёшь запрос с определённым айдишником запроса, ответы прилетают в произвольном порядке, и главное — дождаться ответа на запрос с нужным айдишником.
BTW ещё один опыт, сын ошибок трудных: обязательно надо изолировать JVM и браузеры по разным виртуалкам, иначе войны за память и вылета Java-машины не миновать

Вообще, я собирался сделать доклад 'Real-time webscraping' ещё для JPoint 2018 — но доклад недозрел, может быть, дозреет к CFP на Joker

А теперь они должны объединиться и написать новый JS-фреймворк!

Так они и написали, причем — даже не объединяясь :)
Но есть проблема с тем, что обычно всякие диалоговые окна отрисовываются по какому-то флагу, и анимировать их закрытие не получится. Нет флага — элемента нет в доме — нечего анимировать.


Не совсем понял почему при использовании react-redux невозможно анимировать скрытие элемента.
Есть же в библиотеках коллбек на окончание анимации, в нём уже диспатчим изменение стейта и удаляем узел из dom-а.

ну вот есть у тебя глобальное хранилище-модель, и всё состояние видимого UI является отображением этой модели. По сути, модель является декларативном набором правил для отображения UI. В модели у тебя есть флаг, true=показывать, false=не показывать, от него зависит — будет ли рендериться весь блок целиком. Ты поменял флаг с true на false, блок исчез.


Условно, какая-то такая запись:


const MyComponent = (props) => {
   return { props.mustShowChildrenComponent && <MyChildComponent /> };
}

Вопрос: как именно и куда ты будешь подсовывать свой колбэк на окончание анимации?

Честно, не пробовал, но возможно как-то так:

Например, такой экшн вешаем на крестик закрытия окна
import anime from 'animejs';//моя любимая библиотека для анимаций..)

export function hidePopup() {

  return (dispatch) =>{

    anime({
      targets: document.getElementById('#myPopup'),//надо подумать как красиво прокинуть сюда селектор 
      scale: 0,
      duration: 200
      easing: 'someEasing',
      //ждём пока отработает анимация и диспатчим событие с типом "закрой окно", которое уже убирает окно из dom-а
      complete: () => {
        dispatch({
          type   : 'HIDE_POPUP'
        });	
      }
    });

  } 

}


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

Но сам не пробовал, вполне допускаю могут быть подводные грабли)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий