
Konstantin
26.07.2016
08:56:07
System.import() работает если проект собирается с помощью Webpack 2.x, он юзает SystemJS полифил

Ilya
26.07.2016
08:56:18
Для типовых да, в приципе норм.
Но они на реакте не пишут.
Если так подумать.

Google

Ilya
26.07.2016
08:56:33
Реакт не совсем "Типовая" штука.

Alex
26.07.2016
08:56:37
Про какие то крутые штуки никто не говорит. На крутые штуки фреймворк не напишешь. Он скорее должен решать типовые задачи.

Dmitry
26.07.2016
08:56:37

Alex
26.07.2016
08:56:50
Мне например не прикольно собирать под мелкое приложение довольно большой конфиг.

Ilya
26.07.2016
08:57:06
"На каждом проекте" это условное "новый проект = новая работа".
Надо было уточнить, да.

Alex
26.07.2016
08:57:20
Под большой коммерс проект ок, а вот под мелкие личные задачи как то не весело. И еще каждый раз нужно решать одни и теже задачи вроде сервер рендеринга (под каждый проект по разному можно реализовать)

Ilya
26.07.2016
08:57:24
Так-то да, внутри компании стек хорошо бы один.

Dmitry
26.07.2016
08:57:33

Konstantin
26.07.2016
08:57:34
Alex, да, я тоже задолбался, поэтому и пытаюсь вынести это в отдельный npm module, будет супер

Ilya
26.07.2016
08:57:38
Вот насчёт серверного рендеринга, это да.
С этой хуйнёй я как-то возился, и не очень хочется, а придётся.

Alex
26.07.2016
08:58:03
К примеру пилишь ты небольшое приложение, и еще на сервер рендеринг ты угробишь еще грубо говоря столько же времени

Google

Konstantin
26.07.2016
08:58:18
Webpack 2.x пока что оч глючный, не уверен что пришло время его юзать

Alex
26.07.2016
08:58:20
А тут был бы фреймворк который говорит у тебя будет то и то, и у тебя будет сервер рендеринг, генераторы.

Ilya
26.07.2016
08:58:37
Ну...
Бля

Alex
26.07.2016
08:58:39
Кстати новый вебпак умеет лучше срезать лишний код из зависимостей да? я что то про shake tree читал в новой версии.

Ilya
26.07.2016
08:58:59
Смари, короче.

Dmitry
26.07.2016
08:59:14

Ilya
26.07.2016
08:59:14
Берёшь вот это https://github.com/erikras/react-redux-universal-hot-example
Меняешь копирайты. Пишешь красивый генератор на ноде.
Называешь это Fedcomp Framework
???
PROFIT

Dmitry
26.07.2016
08:59:34

Alex
26.07.2016
08:59:40
Это не фреймворк

Konstantin
26.07.2016
08:59:44
Дима, у меня Webpack 2.x на отдельной ветке пока

Dmitry
26.07.2016
08:59:53

Ilya
26.07.2016
08:59:55
Ты понимаешь, что это не фреймворк только потому, что его кто-то назвал так?

Alex
26.07.2016
08:59:57
в фреймворке куски кода вынесены грубо говоря в код фреймворка. Тут они прямо в бойлерплейте.

Ilya
26.07.2016
09:00:17
Что мешает тебе так-же поступить?

Alex
26.07.2016
09:00:19
Т.е допустим у тебя есть redux-orm и ты его не пишешь в бойлерплейт верно? ты же его как зависимость ставишь.

Ilya
26.07.2016
09:00:38
Ну вынеси.
Хорошая идея же - нужен фв? Сделай сам, форсани.

Google

Ilya
26.07.2016
09:00:57
И тебе хорошо - и людям радостно.

Dmitry
26.07.2016
09:00:59

Alex
26.07.2016
09:01:03
Я думаю нам нет смысла спорить так как мы уже все аргументы обсосали

Dmitry
26.07.2016
09:01:19
Но придётся кучу всего ещё навернуть сверху, возможно
Готового фреймворка нет

Alex
26.07.2016
09:01:33
Для начала нужно узнать кто что юзает, какие задачи решгает и т.д. Я новичок в реакте, я буквально один проект тыкал.

Ilya
26.07.2016
09:02:38
Т.е. ты ждёшь даже не сколько фреймворка, сколько человека, который выработает универсальный стек?
Ааа, ок. Вопрос снят.

Alex
26.07.2016
09:02:51
Нет, я собираю мнения )
зачем пилить велосипед если он уже есть?

Alex
26.07.2016
09:03:12
и из разговора я пытаюсь понять кто как решает эти проблемы и нужен ли он вообще.

Ilya
26.07.2016
09:03:29
Ну я решаю проблемы реакт + редакс + css modules. Это всё.
Остальное прилгается по мере надобности.
Можно ещё сагу сверху накинуть.
Или танк, если хочешь по простому.

Konstantin
26.07.2016
09:11:23
Илья, кстати, как думаешь думаешь зашить ли redux, css modules, postcss в шаблон по умолчанию (react-app), ещё я думаю на счёт MDL (выпиливать из шаблона или оставить)?

Vladimir
26.07.2016
09:15:19
я бы зашил redux+thunk и react router

Konstantin
26.07.2016
09:17:21
https://github.com/kriasoft/react-app/blob/master/template/core/store.js просто Redux стора не достаточно?

Google

Dmitry
26.07.2016
09:17:57
Ну вот уже при первом же вопросе - у кого то саги, у кого то танки, у кого-то еще что-то)

Vladimir
26.07.2016
09:18:32
саги не нужны

Konstantin
26.07.2016
09:18:36
Владимир, а у React Router есть какие-то явные бенефиты по сравнению с https://medium.freecodecamp.com/you-might-not-need-react-router-38673620f3d (history + custom router)?

Vladimir
26.07.2016
09:19:13
наглядность, проще входить новичку
лейауты

Konstantin
26.07.2016
09:25:44
Владимир, не лучче ли лейауты использовать напрямую, например
import Layout from '../components/Layout';
class AboutPage extends React.Component {
return (
<Layout title="About Us" breadcrumbs="Home / About">
<h1>Meet our Team</h1>
<p>We are awesome!</p>
</Layout>
);
}
Например, ты можешь передать breadcurmbs, на примере это строка, хотя может быть React компонент или массив. Т.е. более гибкое решение чем React Router лейауты помойму

Dmitry
26.07.2016
09:27:33

Roman
26.07.2016
09:35:04
Костя не любит react-router)

Admin
ERROR: S client not available

Vladimir
26.07.2016
09:35:26

Roman
26.07.2016
09:35:42

Konstantin
26.07.2016
09:36:10
Roman ок, так и сделаем

Vladimir
26.07.2016
09:36:53
главное - по нему есть доки, много и нормальных

Konstantin
26.07.2016
09:37:03
Надо бы тока запилить какой-нить базовый шаблончик перед этим, с шапкой и менюхой с парой кнопок на чистмо CSS (или CSS-in-JS)

Roman
26.07.2016
09:37:24
опциональные вещи вида thunk-ов / саг / мдл и т.п. не базовых вещей - есть мнение что достаточно грамотного хелпа как встроить это в случае необходимости в сей проект - это реально круче
на крайний случай - отдельные ветки, если спрос на фичу большой

Dimitriy
26.07.2016
09:39:16
Всем привет!
Ребята, кто-то в react-redux связке рендерил строку как html?

Sergey
26.07.2016
09:39:23

Roman
26.07.2016
09:39:56
имхо поэтому они и не нужны в бойлерплейте

Google

Alexey
26.07.2016
09:49:19

Roman
26.07.2016
09:56:08
https://github.com/kriasoft/react-static-boilerplate
взял сейчас вот этот проект и пытаюсь в очередной раз подступиться к сему роутингу
посмотрю что получится, пока не попробуешь, трудно судить
но вообще документации и особливо HOW TO очень не хватает
в реакт-роутере - все очень прозрачно, глянул по диагонали - уже понял в чем концепт
и лишь к документации (довольно хорошей между прочим) обращаешься время от времени в случае различных edge cases
то есть на выходе имеем минимальные затраты времени на разработку и поддержку роутинга в проекте

Dimitriy
26.07.2016
10:03:05

Roman
26.07.2016
10:31:12
я вот лично до сих пор ничего не понял
может кто другой поможет, более лучше обладающий телепатией

Vladimir
26.07.2016
10:32:45
так, а как без thunk делать асинхронные запросы в редаксе?
и без допмиддлварей

Alex
26.07.2016
10:33:07

Dmitry
26.07.2016
10:33:14

Alexey
26.07.2016
10:33:56

Dmitry
26.07.2016
10:37:10
С результатом

Vladimir
26.07.2016
10:38:07
в смысле, откуда диспетч брать?
на этапе mapPropsToActions?

Alexey
26.07.2016
10:43:39
ну как вариант, если ссылка на стейт есть, то можно там взять )
всмысле на инстанс стора

Vladimir
26.07.2016
10:49:10
вообще я думал, что экшнкреейторы могут вполне принимать диспетч в качестве параметра
и тогда танк не нужен
потому что иначе тупо выходит
connect(
...
dispatch=>({
onClick: dispatch=>dispatch(e=>dispatch=>dispatch('CLICKED'))
})
)(MyButton)


Dmitry
26.07.2016
11:11:16
потому что иначе тупо выходит
connect(
...
dispatch=>({
onClick: dispatch=>dispatch(e=>dispatch=>dispatch('CLICKED'))
})
)(MyButton)
Что-то очень сложное...
1) Танк нужен для асинхронных экшенов, а не для проброса диспатча в экшен.
2) Экшнкреейтор - просто функция, может принимать что угодно.
3) В твоем коде оверхед какой-то. Проще же onClick так сделать
onClick: () => () => dispatch({ type: 'BTN_CLICK' })
Тут по идее асинхронность должна быть, иначе вообще можно
onClick: () => ({ type: 'BTN_CLICK' })
4) Есть же import { bindActionCreators } from 'redux':
import { bindActionCreators } from 'redux';
import { onClick } from './btnActions';
connect(
state => state,
dispatch => bindActionCreators({ onClick }, dispatch)
)(MyButton)