24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: что я хочу получить, что я для этого делаю, что я вместо этого получаю. Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
>>1794783 (OP) Привет, анон. У меня вопрос связан с организацией кода.
Я часто слышу, что компоненты в React должны быть независимы. Но насколько они должны быть независимы в бест-практис? В масштабе проекта или чтобы их можно было в другой проект перенести?
У меня есть например scss модули внутри компонентов, некоторые из них подключают глобальные scss файлы с шрифтами, цветами, размерами и прочим. Но ведь такие компоненты перестают быть независимыми. Если их перенести в другой проект, то они просто поломаются либо их нужно будет перенастраивать.
>>1794794 У меня такие же вопросы сейчас возникают при обучении, что на этот счет можно изучить/почитать? А то в уроках показывают разные варианты верстки обычным css, верстка на реакте, но при этом ведь очевидно что тебе нужно продумывать определенную архитектуру того, как это будет работать и взаимодействовать с беком. Если ты не страницу-картинку делаешь, которая вообще без логики и просто одним файлом может быть написана без всяких фреймворков. Или я просто ньюфаг, и это все делают помидоры, и тебе нужно работать уже с более-менее обозначенной структурой?
>>1794884 >что на этот счет можно изучить/почитать Зависит от того что ты конкретно хочешь знать. Нет такой книжки, в которой будут написаны ответы на все твои вопросы.
Ну и вёрстка с беком никак не взаимодействует, если что. Для этого есть axios с Redux Thunk/Saga.
>>1794892 >Ну и вёрстка с беком никак не взаимодействует, если что Вёрстка-то не взаимодействует, но вот мне дали тестовое, где нужно на реакте сделать небольшую страничку интернет магазина с разными статусами наличия товара, и еще парочкой фич, типа оформления корзины. Никакой конкретики нет. И суть в том, что я на фронте могу придумать себе условные данные которые буду принимать для того, чтобы обновлять содержимое страницы, а потом отправлять что-то на сервер, но кто такую логику взаимодействия вообще должен придумать? Или такое бывает только в тестовом задании, а в реальной работе это все нужно будет придумывать совместно с бекендером ну и вообще вряд ли как-то такая логика может быть вырвана из контекста?
Ничего не понимающий в фронте петпроджектовый жабист вкатился. Как лучше всего сделать, чтобы при нажатии на ссылку(?) "зарегистрироваться" вспывала форма регистрации? Можно, конечно, сделать ссылку на новую страницу, но это же медленно?
>>1794901 Если вся структура фронта лежит на тебе, то ты её и должен продумывать. Плевать что там приходит с бекенда. По хорошему ты с этими данными вообще не должен взаимодействовать. Твои компоненты не должны знать что там бекендер у себя написал. Работа с API должна быть отделена от самого приложения.
Активно юзай stateless компоненты и используют Redux.
>>1794907 Если надо чтобы прям всплывала, то проще всего переключать кнопкой стили opacity, transform и pointer-events у формы регистрации. Как лучше — вопрос слишком пространный.
Зачем вручную? Получаешь фуллсайз пикчи с помощью XHR в виде блобов, блобы конвертишь в нужный байтоебский формат для скармливания одной из десятков js-зип-либ, можно даже ебануть в тарболл - там вычислений всяких контрольных сумм меньше и хэдеры проще и качаешь на комп - и все это нажатием одной кнопки, проблема может быть только если пикчи в треде суммарно весят гигабайты - тогда на старой машине с два ядра четыре гига браузер запердит свопом или вкладка уйдет в закат, но и это решается, например в хромом до сих пор не вырезали файл систем апи, т.к. сами его используют для ютуба, кек, можно написать байтоебский врапер над индекседДБ апи, чтобы конструировать архив не в оперативке, а на харде, но для нуба задающего такие вопросы это слишком сложна будет - да. Сто лет назад писал такое для соцсетей всяких. Подозреваю что с нодой наверное проще все будет - но ноду я не петрю.
Аноны, объясните такую тему, чем занимается фронтед разработчик стака React? Работа фронтеда заключается в том, чтобы сверстать, подключить или ещё и сделать дизайн? Или дизайн делает UX/UI дизайнер, а фронт верстает, подключает js?
Разбираться в Редаксе != фигачить однотипный Редакс-код по бойлерплейтам. Если бы разбирался, то понимал бы основные типы данных вроде массивов и что такое редьюсер (у которого нет стейта лол - это чистая функция). Редакс стор с экшенами - это по сути БД которая существует в рантайме приложения.
На плюсах не работал. Просто лабы в универе делал. На Шарпе делал винприложение (калькулятор графов) и игру на Юнити (бизнес-логику включая структуры данных для уровней и пр., делал с нуля). На Жабе писал пару консольных приложулек (игру "угадай число" и генератор слов для конланга).
> Или просто понял что не твоё и решил на ЖС перейти?
Просто с ЖС найти работу с просранными полимерами проще чем на Жабе, Шарпе и тем более Плюсах. Проще чем с ЖС только с пхп, но это какое-то дно уже обычно (да и обилие говнокода пугает на нем) в итоге на первой работе в одном проекте все же имел дело с пыхоговнокодом от лида веб-дева с хаками из 00х. Сам ЖС мне нравится. Но на текущем фронте много тупой работы. Самое сложное что может быть - это взять данные с апишки, посчитать по готовым формулам, отформатировать, показать их на экране. Ну или отправить данные на контракт, провалидировать формочку. Бесит из технических моментов lack of configuration ability в некоторых сторонних либах (вроде React Slick). Из нетехнических - пиксельдрочество в верстке и иногда желание дезингера или ночальника РАДИКАЛЬНО перехерачить ифрейм-виджеты. Из-за этого иногда приходится городить хаки, ломающие структуру программы которые я сам же ненавижу.
> Значит ты вкатился в программирование намного раньше 21.
Да. Первыми ЯПами вообще были Паскаль и Питон (о первом узнал из передачи на СГУ-ТВ в 14 лет). Второй до сих пор использую, но только как скриптовый язык для рассчетов, кодогенерации, вызова системных процедур.
Да и вкатиться то вкатился. Но плотно заниматься программированием начал только с 2к18 года из-за хронической депрессии одно время просирал свое время на игори и аниму, сейчас фикшу это с помощью гзт.
Суп борщ, короче наткнулся тут на тестовое задание на реакте, и решил сделать его, просто чтобы набираться опыта.
Задание что-то вроде пикрила, суть в том, что есть несколько карточек с продуктом, сами карточки, их получение с сервера, размножение через циклы я вроде бы сделал. А вот с версткой какой-то пиздец:
Разумеется самый простой вариант, сделать просто обычную картинку целиком на весь блок, тем более что внутри в любом случае есть картинка, да еще и с прозрачностью, но вот цвета рамок у всех разные, и даже если сделать картинкой только рамку это вроде бы не совсем правильно.
Карточке срезана сверху слева, так что приходится судя по всему применять здесь clip-path, но у неё же есть еще и рамка, которая тоже срезается после клипа, на второй картинке.
Вторая проблема это рамка сама по себе, по какой-то причине она не накладывается на картинку сверху, несмотря на то, что применена к родительскому элементу, а оказывается позади как на второй картинке. zIndex не работает, применил все способы устранения нерабочего зетиндекса, что нашел, ни один не решает проблему, объект как будто просто рендерится позже, и как его перерендеривать пораньше я не знаю.
Еще думал попробовать вариант с ненастоящей рамкой, просто сделать svg клип, и потом сзади добавить еще одну svg закрашенную, чтобы имитировать рамку.
Собственно вопрос, как бы сделали вы? Не обязательно прошу готового решения, но хотя бы алгоритм действий которые бы вы предприняли.
И да. Не стоит сравнивать очередной хелловорлд с примерами из реальных проектов. Если чел не знает основ вроде строк, чисел, массивов, объектов, то его вряд ли даже джуном возьмут.
>>1794783 (OP) Салама-шаланоре, джентельмены. Кое-как напилил учебный микропроект и встал вопрос демонстрации его работодателям. Достаточно ли прямо залить проект на гитхаб с инструкцией для локальной развертки? Или правильнее будет все же напрячься с продакшн модом и сборками (вебпак, хуе-мое, пока не смыслю ничего в этом)?
>>1795356 Берешь картинку товара, обрезаешь ее как нужно, скругляешь углы. Сверху накладываешь через position: absolute рамку. Сделай ее в svg и раскрашивай как тебе нравится.
Алсо, у img должна быть высота, ширина и, желательно, display: block. Или вставляй картинки через фон.
Привет аноны, проблема е*анутая: Загружаю скрипт в хтмле:
<scirpt src="js/class/Block.js"></scirpt>
и он не загружается (в панели разработчика в sources ничерта нет), но когда перемещаю файл в директорию "js/Block.js", и меняю ссылку в src на соответствующую, то все работает.
Пробовал менять имя папки на случайное - все равно не работает Пробовал добавить левый скрипт в папку /classes - все отлично работает
Анончики подскажите, где можно почитать внятное описание того, как под капотом работает Array.prototype.sort? В основном говорят про быструю сортировку, но в каком виде она там реализована? Стоит ли на собесах сортировать массивы с помощью неё?
Анонсы, спасите. Пытаюсь в vscode отлаживать простейший скрипт, а дебагер на очередном f10/f11 улетает куда-то в глубину node-ы, открывается здоровенный файл, и отладка идёт уже в нем. Что это, почему так происходит, как убрать?
1) const arr = [1,2,[3,4, [5,6, [7, [8, 9, 10]]]]] Что лучше arr+''(пустая строка) или arr.toString()? Join конкретно здесь не нужен. Цель - получить самым быстрым способом строковое представление всех элементов (1,2,3,4,5,6,7,8,9,10)
2) Я даже не знаю как верно сформулировать вопрос, но попытаюсь. Когда какая-то функция или действие отрабатывает долго, то контекст идет дальше как бы не дожидаясь (из-за асинхронности), то как интерпретатор понимает что нужно "идти дальше". То есть если функция выполняется более там 5мс, он идет дальше или как?
Вроде бы разобрался с тем как поместить svg в нужное место, но вот проблема:
У меня svg в виде файла, его нужно вставить в страницу, а потом вертеть его стилизацию.
Каким образом это сделать? В телеге ответили, что если у меня svg вставлен через импорт, то его стилизовать вообще нельзя. Этот свг должен в виде кода у меня присутствовать? Каким образом такие штуки делаются вообще, мне эта рамка нужна именно как вектор, чтобы можно было и толщину кастомную сделать, и цвет поменять. Или имелось ввиду, что нужные рамки с заданной толщиной нужно раскрасить и каждый файл отдельно подгружать ввиду их маленького веса?
>>1795820 Да там лютый всратый пиздец получается если вот такую рамку просто в svg выгрузить, либо я что-то неправильно делаю https://codeshare.io/5OwwR0 Это ни в какое сравнение не идет с ровностью border-radius, что за ебанутый всратый формат этот svg, что его нормально браузер отобразить не может? Или у меня сам файл неправильно как-то создан? Я тупо вектор из гимпа выгрузил в svg, когда начинаю увеличивать толщину, такое ощущение что места скруглений там это просто набор пикселей в определенном месте (видимо так и есть)
>>1795826 Сука ебанная мразь, похоже это gimp так люто всирает при экспорте svg, сейчас ребутнулся в AI, он выдал мне просто идеальнейший вектор, всё как надо
>>1795712 >Когда какая-то функция или действие отрабатывает долго, то контекст идет дальше как бы не дожидаясь (из-за асинхронности), то как интерпретатор понимает что нужно "идти дальше". То есть если функция выполняется более там 5мс, он идет дальше или как?
Когда какая-то функция выполняется, движок ЖС тупо не может зарегистрировать изменения на портах ввода и запустить функцию из очереди тасков (microtask или macrotask queue). Поэтому, когда интерпретируется очень большой по объему или ресурсоемкий код в браузере (например, из-за слишком глубокой рекурсии), вкладка с веб-аппом виснет. По этой же причине, обработчики таймаута и интервала не срабатывают точно через N мс. По той же причине у них есть минимальное ограничение на задержку в 4 мс. Клик мыши, ввод с клавиатуры, таймаут и др. события чекаются, когда стек выполнения пустой. По ним в очередь тасков добавляются указатели на функции (обработчики событий, колбэки). А запускаются (пушатся в стек выполнения) они когда и стек и очередь микротасков (куда добавляются указатели на функции отрабатывающие по промисам и пр.) пустые. А таски из очередь микрозадач запускаются (пушатся в стек) когда стек выполнения пустой.
>>1795635 Есть спецификация, которая описывает, что должно произойти, ты же спрашиваешь, «как» должно произойти. А на вопрос «как» отвечает конкретный движок.
Гуглишь движок, ищешь как там это реализовано понимаешь, что тебе это нахуй не сдалось
В общем рантайм флоу такой: проверить буфферы ввода (с клавиатуры мыши и пр. девайсов) и текущее время и запушить в очередь макрозадач колбэки если буфер не пустой или текущее время больше чем зарегистрированное по таймауту время -> если очередь микрозадач не пустая то запустить первую микрозадачу (запушить фрейм активации в стек) и удалить ее из очереди -> если очередь макрозадач не пустая то запустить первую макрозадачу (запушить фрейм активации в стек) и удалив ее из очереди. Когда стек опустошился, очистить буферы ввода а затем повторить этот цикл с начала.
>>1795882 >>1795910 Офигенно сделанно, даже в мыслях не было такое придумать. Да, это фанбокс, но тащемта я просто наткнулся на их тестовое и делаю ради опыта, так что не особо важно
>>1796417 Да, хуй знает как это правильно было бы сформулировать. Ну вот есть объект, допустим как на пикче. У меня есть имя ключа: "d" и нужно пройтись циклом, map-ом, как угодно, по значениям "o", "t", "r".
Аноны, почему первая функция ждет выполнения цикла и потом возвращает результат (даже если вместо 1000, я поставлю миллиард), а во 2ой функции она сразу возвращает undefined.
Я понимаю, что JS это асинхронный язык. Мой вопрос в том, почему первая функция не возвращает пустую строку?
>>1796437 >почему первая функция ждет выполнения цикла потому что это синхронный код >а во 2ой функции она сразу возвращает undefined. она string возвращает >Я понимаю, что JS это асинхронный язык не понимаешь > Мой вопрос в том, почему первая функция не возвращает пустую строку? потому что это синхронный код и он выполняется по порядку
Аноны, есть нынче спрос на жс-бэкэндов? Интересуют как фриланс, так и галеры. А то смотрю вот на даты последнего обновления разных middleware для koa и вижу "3 года назад", "4 года назад" и всякие статейки по этому делу тоже 2-х, 3-хлетней давности. На первый взгляд, складывается ощущение, что хайп по ноде закончился и там всё мхом заросло. С другой стороны, например, модуль etag с npm сейчас скачивают по ~13млн. раз за неделю, т. е. кому-то в бэкэнде это всё надо.
Итак, аноны, юзать ли точку с запятой в конце строки или нет? Аирбнб говорит что надо, но вижу кучу кода даже от казалось бы шарящих людей на ютубе без точек с запятой.
>>1796592 Ну пиздуй на торренты. Словно мне не похуй где ты это смотреть будешь. Ну и нужно быть полнейшим еьанатом чтоб искать на торрентах учитывая что юдеми в течении 30 дней возвращает деньги
>>1796588 Нода только набирает обороты. Никто каком случае и речи быть не может. Просто чистые бэкендеры на ноде не сильно востребованы. А если фриланс интересует то тем более не вижу альтернатив. На всяких шарпах и жавах нет фриланса
Читаю чистую архитектуру, тут говорится, что благодаря фп можно избегать "All race conditions, deadlock conditions, and concurrent update problems". Гуглю - все эти проблемы связанны с многопоточностью. Вопрос. Зачем фп, иммутабильность и т.п. нужно в реакте?
>>1796710 В реакте все проверки того, изменились ли какие-то данные или нет (перед рендером в VDOM), делаются с помощью Object.is() (если правильно помню), что в случае с объектами просто сравнивает ссылки на эти объекты. Т. е. вот у тебя есть state const [ data, setData ] = useState({ key: 'value' }); // oldData и в каком-то хэндлере ты его мутируешь setData(data => {...data, key: 'new_value'}); // newData При этом внутри реакта делается проверка Object.is(oldData, newData) ... или что-то аналогичное, что сравнивает ссылки на объекты. Ну а дальше, если ссылка на объект новая, то это вызывает перерендер соотв. части VDOM, а если ссылка та же самая - не вызывает. Сделано через жопу, да.
как по фасту настроить eslint в vscode, а то он аццки орет шо запятая не правильна шо пробел блят не там, хуле так сложно, пытаюсь во вью больше трачу времени на устранение ошибок еслинта, после питона не привычно
Как в JSX прописать after/before элементы, когда у тебя стили вынесены в отдельную константу? Они вообще в реакте есть? И можно ли пользоваться фичами scss внутри реакта, или он только из отдельного файла подтягиваться может?
Пиздец короче, таки сделал в реакте, без svg и без псевдоэлементов
1. Сначала обычная рамка у родительского элемента, что позволяет кропать любой контент внутри с помошью overflow: hidden 2. Делаю так же clippath у родителя, оставляя видимым все кроме уголка сверху слева 2. Далее внутри добавляю в реакте пустой див в который вставляю стилем небольшой квадратик и поворачиваю его на 45 градусов, задав ему рамку, пикселеёбствую, подгоняя внешнюю рамку квадратика, чтобы она совпала с обрезанным элементом родителя, выступая только на толщину рамки
Итог: контент внутри обрезан и можно менять картинки на ходу, фон у всего полностью прозрачный, можно ставить этот компонент куда угодно, ну и поправлять на лету в отличии от svg, не обращая внимания на положение картинки внутри
Чувствую себя каким-то гением-дегенератом, кажется что это лютая хуета, но это работает.
С точки зрения прозрачности норм решение. Зато теперь из-за clip-path придется каждый раз ебаться с попиксельной подгонкой этой хуеболы под каждый размер рамочки.
Наверное можно придумать более универсальное решение, но мне лень.
Сап, ректальные. Правильно ли я понимаю, что при деплое MERN-приложения (пытаюсь на хероку), необходимо прикрутить сервер сайд рендеринг? Или есть способы проще и я ничего не понял?
>>1796999 Какой-то необходимости нет, просто я ума не приложу как еще заставить все заработать. Как я понял по своим попыткам, хероку запускает ноду, с которой и спрашивает хтмл страницы, которых у моей ноды нет, если я использую клиент сайд рендеринг (либо я криво все загрузил).
>>1797033 Он и index.html не загрузил, похоже, что я как-то жиденько загрузил на гит, поскольку локально все работает. >>1797037 Если я верно понял вопрос, то собираю через npm run build и на сервере экспресс его находит через app.use(express.static('client/build'));
Тогда хуево. Нужно запилить динамическую подгрузку списка при скролле вверх и вниз. Список показывает X элементов , тогда нужно при инициализации загружать 2*X элементов. Когда проскролишь вниз X элементов от начала, то загружать следующие X элементов и добавлять к имеющемуся списку, а проскроленные элементы удалять из памяти и т.д. Когда скроллишь вверх на X элементов и самый верхний элемент - не самый первый, то подгружать предыдущие X элементов и удалять из памяти следующие X элементов
Она не должна его ждать. Она тупо пушит колбэк в очередь макротасков. Почитай что такое стек выполнения, event loop, message queue что ли (как и вообще будет полезно почитать про алгоритмы и структуры данных).
Еще есть доки и туториалы от Мозиллы и W3 где все API подробно и с примерами описываются. Хочешь во фронтенд - есть доки от reactjs.org и пр. В бэкенд - есть от nodejs.org .
Ребят пытаюсь разобраться в ноде. Там в коде есть часть с кодом: app.use(express.json()) И в комментарии написано body parser. Что это значит? Как я понял доступ к объекту реквеста? Что делает это express.json
Я так понимаю весь фронт на реакте, те помимо охенного знания html css нужно знать не менее пиздато взаимодействие js с дом и стилями? А только потом уже укатываться в реакт?
Есть два проекта, один - React приложение, другое - бэкенд, на ноде, предоставляющий API клиенту. После осмысления того, что хайлоуда у нас не намечается, решили фронт и бэк садить в один контейнер докера, под общим сервером. Соответственно, стоит задача - билдить оба проекта по-отдельности, и в виде пакетов подключать к серверу на ноде. Есть ли какие-нибудь best practices по организации этого? Или баш в руки и писать как мне удобно? Я, конечно, могу и сам ручками перетаскивать билды в папку сервера и компилить это всё в image, но я не уверен, что такой подход понравится более компетентным товарищам, которые с этим говном тоже будут иметь дело.
Есть во vue форма которая добавляет данные, нужно использовать дочерний компонент для вывода или можно независимо от иерархии передавать данные в компонент?
Что там знать-то? Какие бывают наиболее распространенные теги, как делать отступы/позиционирование/стилизацию текста и картинок/простые анимации?
> нужно знать не менее пиздато взаимодействие js с дом и стилями
Нет. Но нужно знать как Реакт под капотом это делает, чтобы не писать глючный код. И чтобы понимать, какие проблемы позволяет решить Реакт быстрее чем средства нативного ЖС и когда уместно его использовать.
Заработало, но не совсем здорОво по-моему. Отладчик так же заходит куда ненужно, если указать папки для исключения. А если указать, чтоб игнорировало НЕ рабочую папку со скриптами - работает не куда по либам и т.д./п. не лезет.
>Нет. Но нужно знать как Реакт под капотом это делает, чтобы не писать глючный код. И чтобы понимать, какие проблемы позволяет решить Реакт быстрее чем средства нативного ЖС и когда уместно его использовать.
Нет, но надо знать как браузер это под капотом делает Нет, но надо знать как сетевой адаптер байты получает Нет, но надо знать как видеокарта пиксели отрисовывает Нет, но надо знать как процессор инструкции обрабатывает Нет, но надо знать как электроны работают Нет, но надо знать стандартную модель
>>1797427 Не знаю ни одного человека кто провалил собеседование из-за незнания верстки. Если это конечно не позиция версталы лол. Но без редакса и не думай ходить на интервью. Я тоже раньше учил все крутые технологии. И clojurescript и эликсир а на деле всем на это похуй. Всем нужен реакт + редакс + тайпскрипт
>>1797427 >>1797437 Объясните, чем занимаются фронтэндеры не знающие вообще верстки? Т.е. как вы вообще фронт начинали изучать? Вот просто сразу с ходу минуя html+css прыгнули в реакт и давай задрачивать его? Типа если надо будет поправить положение кнопки или какой стиль наложить будете передавать всё верстальщику? Просто я не совсем понимаю как можно запилить страницу на реакте без знания css, и наоборот, зная только css пилить что-то на реакте? Или вы сразу устраиваетесь сходу работать на готовые проекты, где происходит работа только с логикой?
>>1797458 Как раз в снг фронтендеры и занимаются логикой, на западе верстал как у нас нет. Для реакта хватит знаний уровня марджин лефт 10 10 10 10. >>1797459 Если для себя пилить то да, на реальных проектах все сделает верстала, либы зачем тащить?
>>1797458 Ну как не учили. Конечно прошли пару курсов на хтмл академии. Но мне это тяжко даётся. Начитался что цсс легко а дальше с жс ад и Израиль а вышло все наоборот, жс мне намного понятнее. А дальше просто бутстрап юзал в учебных проектах. Ну и да на работе уже все версталы делали
>>1797473 >>1797469 А мне наоборот на данный момент менее понятно как практиковать JS на конкретных примерах, вот начал пока на реакте тестовый проект пилить, но все же все равно иногда не понимаю что делать дальше и нахуя я это делаю без конкретной цели. Как вы сами с js учились взаимодействовать? Во всех учебниках что встречал какой-то бессмысленный дрочь в консоли вообще без практического применения.
>>1797475 Хз, научись делать весь интерактив на ванила жс, может станет понятнее. Ну и выучи es6 синтаксис нормально, без этого реакт код будет отдавать некой непостижимой магией
>>1797475 Ах да, самое главное, я вообще нигде не могу найти нормальных обзорных или практических уроков по тому, как фронт взаимодействует с беком, куда всё, что я делаю отправляется-то? Везде какие-то уроки и проекты в вакууме. Как будто ты на реальных проектах будешь страницу просто пользователю в виде файла давать скачивать, и он на него просто как на картинку смотреть будет. Как вы учились работать с js именно полноценно? Единственные уроки, где я находил, как подключать фронт к беку были связаны с fullstack проектами, где ты делаешь вообще всё с самого начала со стороны сервера.
>>1797475 Вообще похуй на жс, тебя будут во-первых про реакт спрашивать, на примере твоих проектов кста, а во-вторых как вкатишься к тебе приставят мидла, который поможет тебе вкатиться в тайпскрипт, на котором сейчас 70% проектов запускаем.
в тему про css и html. Как придумать дизайн для собственного проекта для портфолио? Что для этого нужно смотреть/читать? Может кто сталкивался? Бутстрап юзать не хочецца
Изучаю React. Хочу написать приложужу для подсчёта дневной нормы калорий. Вопросос по самой разработке нет, но вот где взять APIшку с базой жратвы? Нашёл только буржуйскую https://fdc.nal.usda.gov/api-guide.html Но ничего русскоязычного нет. Или такое информацией никто не делится свободно?
>>1797482 Гугли MERN Traversy на юдеми. Поймёшь. Но перед этим читай доки реакта. А перед этим сначала поучи жс. Хоть и на оторванных от реальности примерах
>>1797488 Всем похуй на твой дизайн чел. В учебных проектах на это вообще не смотрят. Я тоже делал эту ошибку поначалу. Старался чтобы все было красиво. Но мозги вправил потом. Не наступай на те же грабли
>>1797576 >>1797572 Кстати, а в каком виде юзать бутстрап? React-bootstrap или классический через cdn? Я что-то посмотрел react-bootstrap там какой-то пиздец
Кароче аноны прошел курсы от компании, react redux saga node.js express, sequilize, еще писал todo на ангуляре с rxjs, но спустя полгода понимаю что там такой пиздец, что даже смотреть стыдно. Могу написать минимально рабочую хуйню с беком, понятное дело что гугля на ходу, и все такое. Таких знаний достаточно что бв устроиться джуном, на з.п похуй, мне уже пояснили что сначала работаешь за нихуя, поьом через год можешь просить 1к.Проблема в том что я сцу сходить на собес, я ебаный омега, и думаю что этого мало, и с меня будут рофлить. Да и везде хотят минимум год опыта, и что делать? Поясните неопытному
Аноны как в visual studio code вернуться назад, например я кликаю по компоненту ухожу вглубь, и мне надо вернуться, к родительскому компоненту. И можно ли как-то искать где используется этот компонент? Я юзаю обычный поиск, который слева в боковом меню,но это ведь неудобно нихуя.
>>1797705 > Что юзаете css modules > Как вообще архитектуру стилей выстраиваете Никак, css modules разберется, чтобы не было конфликтов тупой вкатывальщик без работы
>>1797622 Alt+стрелка назад - вернуться к последнему месту редактирования (в данном случае вернёшься туда, откуда проваливался внутрь компонента) или ctrl+p (p нажать 2 раза) - вернёшься к предыдущему файлу. А вообще всё это гуглится, там дохуя полезных штук есть.
>>1797744 Хз, у меня обратная проблема, надрочился по хоткеям в вскоде, теперь в ide чувствую себя инвалидом, а по работе и там и там ковыряться приходится. Вообще в vscode можно все хоткеи переделать через ctrl+k ctrl+s ручками или мб в настройках чего есть или плагин, хз.
>>1797746 ну да я видел, просто в некоторых редакторах по дефолту например ctrl + d дупликат и опять там насраивать хоткеи, мб есть уже готовый набор насроек
>>1797601 Не хватит, конечно. Мало того что это какие-то говнокурсы, так еще и прошло 6 месяцев. Нужны хорошие пет-проекты, нужны знания алгоритмов и структур данных, нужны знания паттернов проектирования, нужны софт-скиллс а не "я боюсь на собес идти, я омега". Омегой ты можешь быть только если знаний у тебя намного выше чем у других.
Решил дрочнуть себя и наполнить html страницу через жс, юзаю insertAdjasentHTML и создаю элементы через createElement, или есть более простые действия?
Хочу укатится с завода, но боюсь что в один день бац и чебурнет со всеми вытекающими, и работки войти не будет, а на заводе штабильность хоть и грязно, как ты думаешь онон есть у ойти в ближайшем будущем (лет 20-30) перспективы причем денежные?
Помогите разобраться с обработкой ошибок в ноде. Вот код. Есть пик 1. В случае ошибки он выполняют функцию next куда передает класс с параметрами. Что делает этот next? Сам класс на пике 2. В главном файле есть строчка app.use(errorHandler). Этот errorHandler middleware и он на пике 3. Так вот объясните плиз поэтапно как эта обработка ошибок работает
>>1797975 Тоже просматривал этот курс, объясню как я это понял. Сильно не бейте, если неправильно, лучше поправьте
> В главном файле есть строчка app.use(errorHandler)
А НАД этой строчкой у тебя прописаны роуты. Запрос идет по роуту, заходит в контроллер, там ловит ретурн и next, next вызывает следующий мидлвер (errorHandler) и передает в него объект err (экземпляр класса ErrorResponse). Этот err является наследником класса Error, соответственно имеет все поля Error плюс статус код. Соответственно в errorHandler прилетает эта ошибка, хендлер консольлогает ошибку и отправляет ответ клиенту жсончиком с текстом ошибки и кодом
>>1797967 Никого не волнует, что ты делал до этого, работодателя интересует, можешь ли ты писать код и работать в команде. Всё. Хватит из поста в пост носить этот дебильный шейминг людей, которые меняют профессию.
>>1798141 Работодатель посчитает, что раз ты не смог добиться ничего на прошлом месте, что решил радикально сменить сферу, то ты явно и здесь говном будешь и быстро развосхитишься. Плюс будет понятно, что ты вкатыш с цыганских курсов только ради ради денег, а не тот, кому реально это дело нравится.
>>1798180 Суть в том что в it меньше этой долбоебской корпоративной шизы где нужно лицемерить что работаешь не ради денег а за идею и скакать кабанчиком. А все потому что дефицит кадров. Я прямо шлю нахуй эйчар с их тупыми вопросами говоря что на хую вертел их компанию и мне не интересна из какой залупы они вылезли. Просто скажите сколько мне можете предложить и в чем суть работы заключается
>>1798182 >что в it меньше этой долбоебской корпоративной шизы Шиз, плиз. В ойти этого больше всего.
>что работаешь не ради денег а за идею и скакать кабанчиком Если ты работает только ради денег, то ты нахуй никому не нужен. Деньги тебе по умолчанию платят.
>Я прямо шлю нахуй эйчар с их тупыми вопросами И шлешь, и шлешь, и шлешь...
Господа. Вопрос. Внутри success ajax запроса запускаю еще один ajax. В url второго запроса вставляется переменная, получаемая из data первого ajax-запроса. в обоих запросах async: false. Проблема: переменная, заполняемая в success второго ajax, не заполняется. Структура такая: var answ; .ajax({ url: url1, success: function(data){ var x = data.smth(); .ajax({ url: url2+x, success: funtion(data){ answ = data.smth(); }}})})
запрашиваю через axios post запросом, получаю данные и потом нужно запросить get запросом после того как данные буду получены post запросом, как грамотно связать?
>>1794783 (OP) Как формируетмя страница в современных веб-приложениях? Раньше везде просто передавался готовый html-документ, файлы css и файлы js. Сейчас вроде как жс сам рендерит страницу на клиенте, где краткое пояснение как именно это происходит? мимо изучал лишь ванильный жс
Анонесы, нужно замерить размеры ещё не отрисованного на странице элемента, со всеми паддингами и прочей разметкой. Нужно для позиционирования.
jQuery с задачей не особо справляется. Какие есть варианты? Хочу попробовать зарендерить за экраном, потом замерить размеры и перепозиционировать с учётом этой информации, но как бы это провернуть?
>>1798653 Single page application, реакт хуякт бабель хуябель jsx все это ебется друг с другом жс в html тегах каша блядь Сам только начал учить так что так
>>1798684 Элемент не отрисован = его нет = нет размеров jQuery вообще не используй, это легаси помойка Для позиционирования можешь просто получить размеры и задать потом их, там миллисекунды пройдут. Ну или хуярь с opacity: 0
>>1798653 Теперь передается один бооьшой жс файл (может передаваться не целиком, а батчами(кусками)), скафолдится на стороне клиента и начинает подгружать куски хтмл кода и вставлять их на страницу в зависимости от действий/бездействий пользователя.
>>1798690 У меня суть в чём: нужно позиционировать элемент с фиксированными, не произвольными размерами, основываясь на этих самых размерах. Вот я сейчас думаю, как это провернуть.
Сравнить могу с всплывающими ответами на дваче при наведении на ссылку. Они позиционируются вокруг самой ссылки в зависимости от своих размеров, при том, что сам ответ ещё не зарендерен.
>>1798700 >let затраченоВечеров = 0; >for (let i = 0; i < числоКомпонентов; i++) { >console.log("зачем вам вообще материал? все компоненты от туда пишутся за 1 вечер"); >затраченоВечеров++; >}
Теперь объясни мне, зачем мне тратить несколько вечеров, если я могу за пару минут воспользоваться готовым решением? Ответил? А я добавлю - чтобы написав очередной свой велосипед, который я до этого использовал только для добавления простых вещей типа набора стилей, не нарваться на ситуацию в которой мне нужно добавить какой-то сложный стиль с сложной логикой, увидеть что вон в том решении, которое, как ты сказал, "можно написать за вечер" уже есть нужный мне инструмент и понять, что для достижения такого же мне нужно либо переписывать весь свой код на это решение, либо тратить много времени на запил подобного велосипеда.
>>1798706 >позиционируются вокруг самой ссылки в зависимости от своих размеров Имею ввиду, что позиционируются относительно ссылки, в зависимости от размера ответа и положения ссылки на экране. Вот мне примерно так же нужно замерить элемент, чтобы его правильно разместить.
>>1798711 Это хорошо когда тебя устраивает то что в API компонента вместе с его дизайном.
Но любая правка сведет к тебя к кастомизации и тебе опять придется сидеть несколько вечеров + городить костыли.
а если у тебя будет свой компонент, это сделать можно гораздо быстрей.
Выпадающий список - пишется за пару часов. Чекбокс - пишется за 10 минут. Модалка - пишется за 20 минут. Туллтип и календарь - пишется за 1-2 дня в сумме. Инпут - пишется за пару часов
все, это базовый набор компонентов которые нужны в проекте и ради этого ты тянешь UIkit?
Написать свой проще и быстрей. Вот я выше описывал компонент выпадающего списка, что бы добавить в него поиск: 1 строчка кода с includes Удаление отмеченного: 1 строчка кода с filter
Просто вы макаки, которые не могут написать свои базовые компоненты в 10 строчек кода.
>>1798703 Получаешь const pos = element.getBoundingClientRect() у элемента, к которому ты хочешь подрубить свой элемент. Делаешь портал, туда суешь свой элемент с position: absolute и left: pos.left + window.pageXOffset; top: pos.top + window.pageYOffset Ширину как хочешь передавай, в реакте можно через пропсы.
>>1798724 Вот мне эти выставляемые браузером размеры и нужно узнать как раз.
>>1798734 >портал >в реакте Но судя по всему, задача не особо тривиальная, раз требует таких инструментов. Видимо, придётся и дальше костылями через сумму высоты/ширины всех элементов внутри + вручную считать паддинги и остальное. По сути, мне не хватает понимания того, как навесить коллбэк на элемент, который бы вызывался по окончании отрисовки. Если б было что-нибудь такое, то было бы гораздо проще.
>>1798703 >при том, что сам ответ ещё не зарендерен.
Почему ты так решил? Такие элементы сначала рендерятся, потом измеряются, подгоняются и снова рендерятся. Содержимое экрана при этом не обновляется, так что для пользователя это происходит незаметно.
>>1798766 Добавлю, что конкретно на дваче вообще нет нужды измерять контейнер самого ответа, достаточно найти точку от которого его позиционировать, а дальше браузер все сделает сам.
>>1798772 Реактомакака это отдельный подвид жс-дауна Форму нинужны, дом нинужон, базовое понимание HTTP нинужно - ничего нинужно, только реакт взять и godmod обеспечен. А потом стоит чутка изменить специализацию и оказывается что наш "инженер будущего" сыплется на элементарщине, в которой шарит интерн
>>1798766 Ну вот я так и хотел сделать, но ведь для этого нужно сначала дождаться, пока загрузятся превьюшки для пикч, и потом только считать с учётом их размеров. И как на момент дозагрузки этих превьюшек повесить листенер - непонятно. Либо хитрым образом считать размеры без картинок, и потом прибавлять загружаемые с сервера готовые цифры ширины и высоты для каждой превьюшки...
>>1798780 Что конкретно подробнее? Ответ позиционруется абсолютно относительно ссылки, ширина контейнера задается от ссылки до края экрана. Внутри этого контейнера можешь делать что хочешь.
>>1798776 Жсомакака порвалась. Какую специализацию, лол? С дом нигде кроме фронта не разбираются а во фронте есть реакт который сводит это на нет. Соответственно ты идиот который тратит время на ненужную хуйню
>>1798841 Да. Это все ненужная хуета для академичных червей. Сам жс знать надо. Со стилями же неразбериха полная там. Варианта 4-5 используют так что все равно запутаешься
>>1798760 Реакт необязательно. Портал нужен чтобы потому что если ты элемент будешь добавлять рядом с нужным элементом и у тебя где то выше есть элемент с position:relative, то все твои left и top пойдут по пизде. Его удобнее вынести в отдельный див, который никак не зависит от остальной страницы.
>>1798776 Тут имелись в виду те дауны, которые учат сначала все основы, даже которые нахуй не надо и все равно это можно загуглить если что. Как тебе знание дом потом может в реакте, вообще не ебу. Если какой то частный случай - загуглишь. А так ты большинство времени будешь обычной хуйней страдать и в итоге получается ты только зря столько времени на изучение потратил.
>>1798853 А меня напрягает когда в 2 раза больше файлов. Если у тебя код нормально разбит по компонентам, то засрано не будет. А с файлами так не получится.
насроил vscode форматировать на сохранение, только ставит лишние запятые и точки с запятой и двойный ковычки вместо одинарных, какой форматтер выбрать? и нужно ли делать это в eslintrc?
>>1797490 Можно же переводить написанное перед отправкой запроса. Например человек вводит "сыр чеддер" ты хуяк запрос к апи переводчика, он выдает тебе сheddar cheese а ты это передаешь апишке usda и получаешь то, что нужно тебе.
>>1798966 Проблема в том, что там я не нашёл продуктов из России[ spoiler]хотя может как-то не так искал[/spoiler]. Вот в MyFitnessPal хорошая база данных, но доступ к своей API, они, вроде как, дают только компаниям.
>>1798956 в настройках prettier ставлю single quotes нихуя не меняется, че блят за хуйня чому это ваще надо насраивать, хуле не синхронизировано, с ибаным еслинтом,
Вечер добрый, Анон! Поступило предложение поработать над одним проектом, и тебуется знание реакта. Есть уверенные базовые знания по HTML, CSS, JS. Посоветуйте какие-нибудь книги, онлайн курсы(желательно в тексте) или ЮТ-каналы, с помощью которых можно быстро начать освоение.
>>1799021 да нахуй мне это нужно когда мне надо лапшу на vue писать, ебанутые веб мартышки не удосужились стандарт один совместить, сука сначала ввели скобочки с запятыми и теперь мне еще ибацца с ними, хуле дев сервак орет на всё это нахуй мне это править, автор дибил пусь удоляет из жс, пойду лучше на го и питоне
блять анон вот скажи мне. есть проблема при работе с либой конкретно в моем случае - select2. чтобы решить ее я всю документацию перекопал уже сука раз 7 так точно - но там все равно нихера нет. обгуглился все че только можно. и все равно ничего не нашел. так вот как в таких случаях поступать: самому задавать вопрос на SoF или же идти к этим пидорасам на гитхаб и открывать issue по поводу своей проблемы?
>>1799049 Да, можешь задать ее на гитхабе. А можешь сюда написать. Что за select2? Плагин для жиквери? Тогда не задавай сюда, за жиквери в 2020 в рот нассать могут.
зачем вам эта библиотека? Вся эта валидация решается самописным хуком в 5 строк. Принимаете в него поля с регулярками + значения возвращаем результат ошибок для полей, если регулярки не прошли
А какие там могут быть действия можете мне рассказать?
допустим у тебя есть 10 полей. ты делаешь под них регурярки и в зависимости от результата формируешь массив ошибок. (можно вывести в одном месте или отобразить в каждом контролле ввода)
Зачем для этого библиотека? что она еще может такого делать кроме того что я описал?
>>1799143 Зачем изобретать велосипед? Будет разрабатывать свою архитектуру и в итоге всё равно придёшься к своему реакту. Так может логичнее потратить время не на придумывание велосипеда, а сразу начать пользоваться решением, которое придумали умные люди?
>>1799143 А потом кто ебаться будет с твоим фреймворком. Так и представил как пришел на проект а там фреймворк сысевэдишн. Тут же нахуй всех послал и ушел в нормальную контору
>>1799184 Ну если ты шаришь в React'e, то с помощью чего лучше работать с формами? Речь идёт не про пару полей, а большую таблицу с данными, где юзер выбирает нужное ему.
>>1798813 Ну давай мы будем гадать что у тебя не работает. Вот мои настройки, не забудь плагин eslinit поставить и посмотреть что он высирает в консоль.
>>1799185 Вопрос всё ещё под вопросом. Пользователю выводится n-ое количество товаров, он отмечает нужный ему + устанавливает кол-во товара. Как это правильно обрабатывать?
> Нет, но надо знать как браузер это под капотом делает
Да. Для оптимизаций рендеринга, загрузки ресурсов и пр. Да и вдруг обычный фронт заебет и ты захочешь уйти в геймдев и пр.
> Нет, но надо знать как сетевой адаптер байты получает > Нет, но надо знать как видеокарта пиксели отрисовывает > Нет, но надо знать как процессор инструкции обрабатывает > Нет, но надо знать как электроны работают > Нет, но надо знать стандартную модель
Как бы ща ни кукарекали тут про "бесполезность" базовых знаний Computer Science, вроде алгоритмов, структур данных, архитектуры компьютера, сетей, но они все таки полезны. Хотя бы для того, чтобы держаться на плаву в быстроменяющемся мире технологий. А также поменьше кодить всякую работающую через раз и непонятно как чушь.
Часто употребляемые атрибуты и свойства можно за пару дней выучить. Верстку по макетам отточить максимум за пару недель. Это не настолько серьезный по сложности навык для фронтендера по сравнению с навыками программирования, которые требуются и от бэкендеров.
А если ты захочешь перекатиться из фронта который по мне в основной своей массе довольно скучный, где самое сложное - это валидация формочек, локальное крудошлепство и отправка запросов на бэк скажем в геймдев или какой-нибудь сложный бэк? И вообще тебе понадобиться решить задачу, которая выход за рамки стандартного крудошлепства (например, кодогенерация)?
>>1799237 Третьемирные пидорахи инидии/роисии/тайланда в основной массе рассматриваются как разгребатели низших говен Тем временем средний белый фронт макак-вкатун получает 3-5к$
Как же горит, ууууууууух. Почему prettier такой убогий, зачем он сворачивает мой мультилайновый jsx в одну строчку, почему он убирает пробелы и фигурных скобок ТОЛЬКО в jsx. Почему для этого поведения нет конфига, все обгуглил, все по старому. Причем для ноды он идеально подходил, а в реактовском jsx начал творить непотребства.
>>1799799 Нужен вкатуну. Чтобы использовать его быстренько в своих проектах и не ебаться с миллионом цсс свойств. Опытному же разработчику нах не нужен
>>1794783 (OP) Есть приложение чата, где Посетитель жмет виджет в углу экрана и входит в состояние чата с Оператором. Необходимо автоматически завершать чат спустя 5 минут после начала, подозреваю что со стороны Оператора или Посетителя надо отправлять запрос на бэк, который просигналит о конце чата, но как правильно установить этот таймаут?.. Он должен запуститься именно после того как будет отправлено первое сообщение, не раньше
Народ, а нет ли такой либы, которая бы позволяла хранить и изменять (с валидацией) состояние View Model (т. е. более-менее абстрактное состояние интерфейса) без привязки к конкретному фреймворку? Т. е. нечто вроде Redux, но чтобы оно было вменяемым (искусственное требование иммутабельности состояния идёт нах) и его можно было использовать с разными фреймворками (Angular, React, Vue). Чтобы можно было при необходимости эти дебильные фреймворки послать нах и, не переписывая View Model, использовать, например, Custom Elements + Shadow DOM.
https://pastebin.com/Eet984i1 и "асинхронный код" который отправляет через форму картинку в rest api, где она ресайзится, и за post запросом идет get который получает её url, так вот иногда он возвращает null, думаю шо код у меня говно видимо get запрос не дожидаясь post respons'a выдает мне нулл, за обработку ошибок не пинайте, сделаю
Правильный ли это подход? Задача: получить данные и выбрать из них необходимые пользователю, а потом отправляются с помощью формы на сервер. Как это реализовал: с помощью API получил данные и залил в глобальный стейт. Редакс увидел изменения и задиспатчил в компоненту. Там эти данные записал локальную переменную. Когда пользователь что-то указывает, с помощью хуков данные изменяются в локальном массиве. А потом всё отправляется на сервер. Где я придумал велосипед или всё нормально?
Есть какие то правила именования классов и айди при верстке и работе в жс кроме камелкейс или кебабкейс? Как я понял если юзаешь бутстрап нужно давать определенные названия
>>1800165 Проблема в том, что в понимании работодателя фуллстак - чел, который одинаково заебись может писать как фронт, так и бэк. Это 8-10 лет опыта как минимум. Но и стоит такой чел дорого.
А в понимании работника фуллстак - чел, который более менее умеет во что-то одно и чуть-чуть умеет в другое. Это 2-3 года опыта максимум, а то и меньше. И таких большинство.
Пишу на шарпе и неткоре, но умею сверстать форму на реакте - фуллстак.
Знаю вью и могу накидать сервер на экспрессе - тоже фуллстак.
>>1800188 ну не совсем так, для бизнес кабанчиков и горе мп фултак это тот кто будет любые задачи делать в одного, никого не ждать, ни от кого не завидовать, а пилить фичи. Может быть хуёво, может быть не расширяемо, но главное что бы работать. А ещё и сам эстимейты точно проставить, ведь он один на работе. А на деле получем >чел, который более менее умеет во что-то одно и чуть-чуть умеет в другое. Обычно это бэки которые умеют формочки.
1. Насколько говноправктика в тестировании использовать data- атрибуты? Где то ругаются, где то говорят, мол код более устойчивый. Типа класс поменяться может, а тестайди он как есть.
2. Как правильно тестировать connected компоненты в редаксе? Сейчас вкорячил через redux-mock-store и .dive() энзимовский, вроде работает, так вообще норм нет?
Двачик, кто такие эти ваши паттерны и best practice? Я почти полтора года самообучаюсь реактом и вью, единственный паттерн про который узнал/помню, это компоненты-контейнеры и компоненты-презентации, и то только потому что он в официальной документации упоминался, с ссылкой на статья денчика, который говорит что устарела эта фишка уже. Так кто такие эти ваши паттерны?
Джентельмены, насколько важно портфолио для джуна? Пилю учебный микропроект, но стоит ли с ним ебаться и дальше с деплоем, доп. функционалом итд, если многие дают тестовое задание и ориентируются на него?
>>1800574 npm install - должен устанавливать зависимости npm start - должен запускать девсервер npm run build - должен высирать готовый билд проекта в отдельную папку.
Плюс неплохо иметь задеплоеную версию на хероку или ГХ пэйджес.
>>1800570 >Заведи себе привычку заливать на гит весь свой код, хоть ЛАБА1, хоть учебные проекты с курсов. У меня куча этой параши залито на гитхаб, но все скрыто. Имеет смысл открывать для собесов? Или чисто для статы активности ан главной странице?
Все еще юзаете let i =0; и парашу типа i++/++i? Вы же в курсе что высирается 1/2 ссылки, а если в цикле то пока он не закончится память не освободится?
Да дело в другом, я про то что свой компонент VS чужой - у вас все равно на выходе получается говно обернутое в 10 оберток, переписанное кучей important почему бы сразу не написать хороший компонент на TS со всеми плюшками под задачу.
Где я работал - все коллеги всегда писали свои компоненты. а AntUI и прочее использовали в основном какие-то джуны, не имеющие даже свою кнопку создать. и всегда плевались в сторону этих ваших ANt материалов и прочей хуйни.
ты не сравнивай фреймворк и кнопку которая пишется за 30 минут.
Больше пары строк кода в посте или на скриншоте ведут в Ад.
Для программирования на HTML https://jsfiddle.net/
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: что я хочу получить, что я для этого делаю, что я вместо этого получаю. Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Руководство для вката:
https://github.com/JS-Liberty/guide