
anoru
11.08.2016
16:19:14
@wapgear https://github.com/css-modules/css-modules-require-hook
Вот простой пример
const hook = require('css-modules-require-hook');
hook({
generateScopedName: process.env.NODE_ENV === 'production'
? '[hash:base64:5]'
: '[name]__[local]___[hash:base64:5]',
});
Работает на серверном рендеринге и тестах

Google

anoru
11.08.2016
16:20:04
import { shallow } from 'enzyme';
import Loading from './';
describe('Loading component', () => {
const element = shallow(<Loading />);
it('render', () => {
expect(element.find('div')).to.have.length(1);
});
});
то есть можно спокойно писать тесты
В hook({ просто должно совпадать тоже самое, что у тебя в вебпакконфиге
поэтому там проверка на продакшен или нет

Cocker
11.08.2016
16:20:46
Народ, вот такой вопрос. У нас есть кодер, который делает html+CSS по макету, и есть js программист, который это все потом натягивает на реакт, коннектит с бекендом и так далее. Это вообще нормально, или это должен делать один человек? И второй вопрос - если так продолжать, то как бы сделать полегче синхронизацию html, который сверстал первый, с jsx в компонентах, в случае изменений? Щаз первый кричит, что он что-то поменял, второй открывает html файлы и переносит изменения руками в свои компоненты.

anoru
11.08.2016
16:20:49
т.к. конфиги тоже разные могут быть, как у меня

hlomzik
11.08.2016
16:21:17

anoru
11.08.2016
16:21:36
для дева длинный класс, чтобы проще было понять какой это компонент
для продакшена обычный хеш

hlomzik
11.08.2016
16:21:44
Народ, вот такой вопрос. У нас есть кодер, который делает html+CSS по макету, и есть js программист, который это все потом натягивает на реакт, коннектит с бекендом и так далее. Это вообще нормально, или это должен делать один человек? И второй вопрос - если так продолжать, то как бы сделать полегче синхронизацию html, который сверстал первый, с jsx в компонентах, в случае изменений? Щаз первый кричит, что он что-то поменял, второй открывает html файлы и переносит изменения руками в свои компоненты.
учите верстальщика делать болванки компонентов

anoru
11.08.2016
16:21:44
ну, это вкусовщина
[name]__[local]___[hash:base64:5]',
Типа тут не только хеш, а еще и имя.
Если же для дева и прода одно юзается, то тогда не нужны условия

Google

hlomzik
11.08.2016
16:22:42
ну да, у меня так и есть) понятно. я просто подумал, что это важный код

anoru
11.08.2016
16:22:58
это я просто скопипастил)

Anton
11.08.2016
16:23:10
И собственно сервер рендерит без них
Что посоветует?
Е

anoru
11.08.2016
16:23:42
extractTextPlugin
он собирает тебе bundle.css
@wapgear Посмотри вот этот простой проектик
https://github.com/anorudes/redux-easy-boilerplate
там много комментов и максимально упрощенный код

Lupsick
11.08.2016
16:29:27
Народ, вот такой вопрос. У нас есть кодер, который делает html+CSS по макету, и есть js программист, который это все потом натягивает на реакт, коннектит с бекендом и так далее. Это вообще нормально, или это должен делать один человек? И второй вопрос - если так продолжать, то как бы сделать полегче синхронизацию html, который сверстал первый, с jsx в компонентах, в случае изменений? Щаз первый кричит, что он что-то поменял, второй открывает html файлы и переносит изменения руками в свои компоненты.
очень грустно, если на простецкую работу у тебя два человека

anoru
11.08.2016
16:29:58
>Это вообще нормально, или это должен делать один человек?
нет. Пускай верстает сразу с реактом и его окружением, этому научиться можно за несколкьо дней

Alex
11.08.2016
16:30:30
Верстальщик должен верстать сразу компонент
желательно с тестами

anoru
11.08.2016
16:30:45
реакт сам по себе элементарный

Cocker
11.08.2016
16:32:25
Спасибо. А он, то есть, часть работы фпрнтендера берет на
Себя?
Но я понял, надо их мерджить )

Alex
11.08.2016
16:34:50
Часть работы? да, верстку. Только он верстает сразу там где нужно.
А второй как я понимаю может уже логику прикрутить.
Если ваш верстальщик еще освоит https://github.com/kadirahq/react-storybook или подобное, то цены ему не будет.

Google

Alex
11.08.2016
16:35:34
А вообще лучше с тестами конечно, но это влажные мечты.

Cocker
11.08.2016
16:35:38

Alex
11.08.2016
16:36:20
https://semaphoreci.com/community/tutorials/testing-react-components-with-enzyme-and-mocha
Ну как то так
Плюс где то еще видел тесты где просто запекается содержание дерева внутри теста, и если тест меняется это видно.
От фейсбука вроде, ток найти не могу.

Cocker
11.08.2016
16:36:59
Спасибо

Alex
11.08.2016
16:37:23
Главное чтобы фронтендер заложил под это базу и обучил верстальщика.

Cocker
11.08.2016
16:37:39
Ага
Понятно, куда двигаться
Круто

from
11.08.2016
16:51:41

Bogdan
11.08.2016
17:16:17
Может кто-то подсказать по relay, graphql - насколько я понимаю он позволяет вытаскивать вложенные связи только как свойства объекта а вот если нужно например получить плоский массив всех комментариев во всех постах во всех бордах конкретного пользователя?

hlomzik
11.08.2016
17:20:35
внутрь передается className=“logo”, но он мапится на внутреннее именование модуля, что нам не нужно
но я уже понял, что сам же дурак, потому что снаружи должен приходить хэш, а он уже останется неизменным. просто для теста у меня снаружи не было модулей, вот и придумал проблему на пустом месте

from
11.08.2016
17:44:36

Vladimir
11.08.2016
18:03:56
Может у кого-то завалялся готовый алгоритм решения? https://jsfiddle.net/frenzzy/8pou3j9f/

hlomzik
11.08.2016
18:33:45

Evghenii
11.08.2016
18:45:39
всем добрый вечер, ребятки кто-то сталкивался с ресурсом где предлагают идеи для опен сорса?

Anton
11.08.2016
18:46:07
про экстракт и бандл цсски я знаю

Google

Anton
11.08.2016
18:46:09
вопрос не в этом
Просто при сервер рендере я получаю код по типу
<div>
<span>Blah</span>
</div>
а должно рендерится
<div className="block_dDtevxcD">
<span className="block_sub_Sdjlqg">Blah</span>
</div>

anoru
11.08.2016
19:57:02
css modules hook как раз для этого
Телефон поправил слово. Вернул правильное)

Anton
11.08.2016
19:59:15
ага
спасибо
гляну

anoru
11.08.2016
20:02:08
@wapgear ты главное не самый первый пример в репе юзай

Admin
ERROR: S client not available

anoru
11.08.2016
20:02:19
он просто позволяет не упасть при импорте ксс модулей. Но у тебя классы не поставятся, т.к. будут пустые строки

Anton
11.08.2016
20:02:32
да надо этот хук рядом с бабель-регистер хуком припихнуть :D

anoru
11.08.2016
20:02:40
и получится как раз дивы без классов
Там далее идет норм пример

Anton
11.08.2016
20:02:56
а
окей
спасибо

anoru
11.08.2016
20:02:59
const hook = require('css-modules-require-hook');
hook({
generateScopedName: '[name]__[local]___[hash:base64:5]',
});
а нет, он как раз первый
может изменили readme) давно смотрел

Google

Anton
11.08.2016
20:03:37
я помнится какой-то пример попробовал на последних нотах терпения
Он не сработал => я сгорел => код остался без классов

anoru
11.08.2016
20:04:07
ваще все эти хуки крутая тема
require('asset-require-hook')({
extensions: ['jpg', 'png'],
});
я еще такое юзаю
чтобы не падало на require картинок)

Anton
11.08.2016
20:05:47
тоже попробую
ща хардкорю для бабеля
require.extention['css'] = () => return;
и так для всех расширений
Но чувствую что херня идея

anoru
11.08.2016
20:06:45
Можешь еще под конец добавить
babel-plugin-webpack-alias, чтобы совсем идеально было) Это для вебпакалиасов. Три основные проблемы при серверном рендеринге - картинки, вебпакалиасы и стили)

Anton
11.08.2016
20:07:28
да уже понял
завтра буду пробовать, опять заказчика обрадую

anoru
11.08.2016
20:07:35
И элементы с классами будут. если тупо игнорить импорт стилей, то тогда без классов будет
:)

Anton
11.08.2016
20:07:58
Бедолага
Купил себе курс какой-то по редаксу
чтобы сервер рендер запилить
А я с ним неделю не общался, сюрприз готовил
В итоге запушил ему сервер рендер, парень чуть от счастья не усцался