
Vladimir
16.07.2016
14:01:18
Но красивый

マイク
16.07.2016
14:05:16
Вам шашечки или ехать?

Denis
16.07.2016
14:28:40
:)))


anoru
16.07.2016
15:38:06
Ребят, вот несколько раз поднималась тема кто как билдит разные бандлы, когда несколько языков. Но вот интересует другой вопрос. Допустим у нас есть в проекте 2 языка en и ru, а также множество поддоменов. Например, бесконечное количество. И теперь надо как-то сделать, чтобы для каждого поддомена брались свои языки, стили и попадали в бандлы типа
dist/домен_проекта/файлы
Допустим файл стилей для домена B содержит в себе несколько переопределений осного стиля компонента
И в бандл должен попасть header/styles.scss и header/styles_${domain}.scss
Это нужно по той причине, что у разных поддоменов отличаются тексты и стили разных компонентов.
Причем заранее создавать все файлы стилей для каждого проекта не хочется. Вебпак должен сам проверить есть ли такой файл в папке, загрузить его, потом при билде создать нужный бандл.
Для стилей приходится писать какой-то адовый костыль типа
require('./styles.scss');
const req = require.context('./', false, /.scss$/);
if (req.keys().indexOf(`./styles_${__PROJECT__}.scss`) > -1) {
req(`./styles_${__PROJECT__}.scss`);
}
где в __PROJECT__ домен текущего проекта. require.context тут нужен, чтобы определить присутствие файла в папке. Но при этом в билд продакшена он все равно залетит.
Для того, чтобы избавиться от этого далее следует написать лоадеры для вебпака под scss. Первый для обычного styles.scss, второй для ${project_domain}_styles.scss и третий для всего остальнго (там все попадает в null-loader, чтобы в бандле отсутствовал контент)
И теперь мы можем билдит разные проекты передавая в node env имя домена.
Основная проблема начинается именно с языками, т.к. стили на серверном рендеринге не нужны, а вот языки еще как.
Надо, чтобы json файлы языков грузились как через ноду обычную на серверном рендеринге, так и через вебпак в дев режиме + хотрелоад, так еще и попадать в разные билды.
Вот эта задача выглядит реально хардкорной. С разбиением по языкам особо проблем нет, т.к., когда мы добавляем допустим новый язык на сайт, то создаем файлы языков для всех компонентов. Они точно отсутствовать не будут
А вот в случае бандлов под разные поддомены - не везде требуются свои языки или стили для поддомена

Google

anoru
16.07.2016
15:44:36
const req = require.context('./', false, /.scss$/);
if (req.keys().indexOf(`./styles_${__PROJECT__}.scss`) > -1) {
req(`./styles_${__PROJECT__}.scss`);
}
у этой штуки жуткая проблема в том, что она работает лишь в деве
когда билдишь для прода - он все равно забирает все файлы в бандл
Не нашел способа, чтобы условием определить присутствие файла в папке и добавлять/не добавлять его в бандл по желанию. Чтобы работало как с хотрелоадом, так с продакшен билдом и еще нодой серверным рендренгом
очевидно я не могу определять по присутствую в папке типа через какой-нибудь fs
т.к. этот код также сработает и на клиенте
а можно как-нибудь написать лоадер в вебпаке, чтобы он не падал, если файл отсутствует?
И тупо писать require('test_' + variable + '.js). Если файл найдется - грузанется, если нет, то не упадет )

Владимир
16.07.2016
16:18:49
Если цсс то до цсс лоадера

anoru
16.07.2016
16:21:57
Это поможет проверить присутствие файла в папке и будет работать также и с вебаком? А можно пример?

Владимир
16.07.2016
16:54:55
Пробуешь прочитать файл, если читается делаешь че хочешь, если нет пустую заглушку возвращаешь
Примеры в гугле, смотри как стайл лоадер работает

Google

anoru
16.07.2016
16:56:09
Ну, примерно тоже самое и ищу, вот только с примерами
в стайллоадерe require, который упадет при импорте отсутствующего файла. А уже потом идет разбор контента. Или я что-то не понимаю?
https://github.com/webpack/style-loader/blob/master/index.js

Владимир
16.07.2016
16:57:40
Тебе нужна фаза питч
Которая лоадеры чекает слева на право
В ней ты можешь либо вернуть заглушку. Не переходить к другим в цепоке, либо ничего не возвращать и вся цепочка отработает

anoru
16.07.2016
16:59:08
Спасибо, погуглю в данном направление
Не помогло
Кстати, кто-нибудь юзал https://github.com/davezuko/react-reformed ?
хотя оно не так давно появилось для этого

Владимир
16.07.2016
18:25:08
Значит не правильно сделал

Ivan
16.07.2016
19:03:10
return state
.transform()
[isBold ? 'unmark' : 'mark']('bold')
.apply()
впервые увидел такой вот вызов метода в чейне
тут https://github.com/ianstormtaylor/slate/blob/master/docs/guides/applying-custom-formatting.md

Viacheslav
16.07.2016
19:07:26
имхо не красиво

Ivan
16.07.2016
19:08:07
разве во времена jquery операторы внутри [] работали?
разве это не модная es6 фича
а работали

Viacheslav
16.07.2016
19:09:28
нет, работали

Ivan
16.07.2016
19:09:36
путаю с { [blabla] : }

Google

Viacheslav
16.07.2016
19:09:39
в es6 сделали присовение

Ivan
16.07.2016
19:15:57

anoru
16.07.2016
19:19:50
удивительно, что не встречал ни разу такое :D


lamo2k
16.07.2016
19:25:41
Ребят, вот несколько раз поднималась тема кто как билдит разные бандлы, когда несколько языков. Но вот интересует другой вопрос. Допустим у нас есть в проекте 2 языка en и ru, а также множество поддоменов. Например, бесконечное количество. И теперь надо как-то сделать, чтобы для каждого поддомена брались свои языки, стили и попадали в бандлы типа
dist/домен_проекта/файлы
Допустим файл стилей для домена B содержит в себе несколько переопределений осного стиля компонента
И в бандл должен попасть header/styles.scss и header/styles_${domain}.scss
Это нужно по той причине, что у разных поддоменов отличаются тексты и стили разных компонентов.
Причем заранее создавать все файлы стилей для каждого проекта не хочется. Вебпак должен сам проверить есть ли такой файл в папке, загрузить его, потом при билде создать нужный бандл.
Для стилей приходится писать какой-то адовый костыль типа
require('./styles.scss');
const req = require.context('./', false, /.scss$/);
if (req.keys().indexOf(`./styles_${__PROJECT__}.scss`) > -1) {
req(`./styles_${__PROJECT__}.scss`);
}
где в __PROJECT__ домен текущего проекта. require.context тут нужен, чтобы определить присутствие файла в папке. Но при этом в билд продакшена он все равно залетит.
Для того, чтобы избавиться от этого далее следует написать лоадеры для вебпака под scss. Первый для обычного styles.scss, второй для ${project_domain}_styles.scss и третий для всего остальнго (там все попадает в null-loader, чтобы в бандле отсутствовал контент)
И теперь мы можем билдит разные проекты передавая в node env имя домена.
Основная проблема начинается именно с языками, т.к. стили на серверном рендеринге не нужны, а вот языки еще как.
Надо, чтобы json файлы языков грузились как через ноду обычную на серверном рендеринге, так и через вебпак в дев режиме + хотрелоад, так еще и попадать в разные билды.
Вот эта задача выглядит реально хардкорной. С разбиением по языкам особо проблем нет, т.к., когда мы добавляем допустим новый язык на сайт, то создаем файлы языков для всех компонентов. Они точно отсутствовать не будут
А вот в случае бандлов под разные поддомены - не везде требуются свои языки или стили для поддомена
Мы для этого написали плагин https://github.com/lamo2k123/theme-webpack-plugin ксожалению доки пока нет и работает с модулями. Думаю сами сможете подсебя код подогнать.


anoru
16.07.2016
19:27:42
ого, спасибо. Обязательно посмотрю

Aleh
16.07.2016
21:05:14
как-то здесь еще не перетерали https://facebook.github.io/react/blog/2016/07/13/mixins-considered-harmful.html

Ostap
16.07.2016
22:41:07

Ave
16.07.2016
22:43:17
чем лучше https://github.com/gcanti/tcomb-form?

Dmitry
16.07.2016
23:00:33
Может кто-нибудь подсказать, как разруливаете кейсы, когда надо в mapDispatchToProps запустить экшен и после изменения стейта тут же еще один запустить? Хочется, чтобы код как-то вместе лежал
Не лезет ничего в голову

Alxander
16.07.2016
23:02:07

Alxander
16.07.2016
23:02:38
Ой, скобочку забыл.

Dmitry
16.07.2016
23:03:02
:0 удивительно, у меня ругался, что не промис) Может засыпал
ага, до сих пор и ругается Uncaught TypeError: dispatch(...).then is not a function

Alxander
16.07.2016
23:05:54
У тебя redux-thunk стоит? Может это его дело?

Dmitry
16.07.2016
23:07:10
Неа, у меня саги

Alxander
16.07.2016
23:57:32
Насколько понимаю dispatch возвращает результат экшнкриейтера, пропущенный через миддлевари.

[Anonymous]
17.07.2016
03:50:55
http://react-etc.net/entry/your-license-to-use-react-js-can-be-revoked-if-you-compete-with-facebook

Google

Ҫѐҏӗѫӑ
17.07.2016
04:45:23
новиночка

Lupsick
17.07.2016
09:53:23
https://github.com/webpack/webpack/tree/master/examples/i18n
как это можно использовать? юзер грузит себе 2 жса?

lamo2k
17.07.2016
10:24:33

Lupsick
17.07.2016
10:41:26
а если он язык меняет?

anoru
17.07.2016
10:43:21
релоад страницы

Lupsick
17.07.2016
10:46:20

Admin
ERROR: S client not available

Denis
17.07.2016
11:13:01
Гайз, можно ли как-то заставить intellij раскрывать .myBeautyForm в
<div styleName="myBeautyForm"></div>
вместо
<div className="myBeautyForm"></div>
для jsx соответственно
и еще при раскрытии атрибута вместо "" ставить {}?
на последнее кому-то уже отвечали, правда не могу найти ответ

lamo2k
17.07.2016
11:26:21

Lupsick
17.07.2016
11:27:21
еще я читаю что у него нет pluralization
это так?

lamo2k
17.07.2016
11:28:33

Lupsick
17.07.2016
11:28:51
я смотрю на i18next

lamo2k
17.07.2016
11:31:24
а ты что-нибудь юзал?
Нет. У нас в редисе секции с переводами лежат и по необходимости по сокету доставляемых нужную секцию
А если без хранилища то можно в отдельных json хранить и забирать нужный язык. После смены языка вызвать forceUpdate на root компоненте

Google

Lupsick
17.07.2016
11:41:31

lamo2k
17.07.2016
11:44:07
Для нас это то что надо, мы в Реал тайме можем править переводы и добавлять языки. Без релиза.

Lupsick
17.07.2016
11:45:18
и зачем править переводы в реалтайме?
держать сокет это дорого

lamo2k
17.07.2016
12:00:52
У нас вся апликуха по ws работает )

Lupsick
17.07.2016
12:05:12

マイク
17.07.2016
12:14:30

Lupsick
17.07.2016
12:14:44

マイク
17.07.2016
12:14:53
Не оч пацаны

Lupsick
17.07.2016
12:15:22
в моем понимании держать тсп коннект постоянно с приложением дорого
оно должно быть выгружено в оперативку

マイク
17.07.2016
12:16:27
Э, кто должен быть выгружен?

Lupsick
17.07.2016
12:16:42

マイク
17.07.2016
12:17:27
А обычное не должно?

Lupsick
17.07.2016
12:17:45
просто бля серверное приложение которые является сокет-сервером

マイク
17.07.2016
12:19:18
Я ничего не понял, но ты не прав.