Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   React'а тред (https://javascript.ru/forum/offtopic/53890-react%27-tred.html)

UIjs 02.05.2015 16:26

Цитата:

Сообщение от Gozar
мусор!

нет не мусор, пруф http://www.youtube.com/watch?v=NbLfDvQsesk

UIjs 02.05.2015 16:35

Erolast, а это для тебя друг https://www.youtube.com/watch?v=k63nnnVXEBs

поучу тебя немного ооп

Erolast 02.05.2015 16:37

Цитата:

нужно костылить че то там с модулями
Если ты считаешь разделение кода на модули костылем - нам не о чем беседовать.

Цитата:

какими то хаками
Нету никаких хаков.

Цитата:

КАКИЕ ТО ПЛЮСЫ
Нативность.

Цитата:

нет, private undefinet извне класса
Неужто берешь toString иницализатора, подменяешь this.privates на замкнутые переменные и прогоняешь это дело через эвал? Чо, скажешь не костыль?

Gozar 02.05.2015 16:40

Цитата:

Сообщение от UIjs
нет не мусор, пруф http://www.youtube.com/watch?v=NbLfDvQsesk

Сохранил себе видео, было смешно. А где я писал, что компоненты в Angular нельзя делать? Напомни. Хотя можно было тебя ещё немного побесить. Цели такой не было, но тебя так забавно плющит :D

ПС: атрибуты мусор! ;) Особенно какие-нибудь левые типа ng- , я уж молчу про ui-, да и data- шлак левый, но что уж поделать, сделали по просьбе ламеров...

Gozar 02.05.2015 16:43

Мне больше идея web-components нравится, жаль что она на первый взгляд(визуально) такая жуткая.

Erolast 02.05.2015 16:48

Цитата:

Сообщение от UIjs (Сообщение 369152)
Erolast, а это для тебя друг https://www.youtube.com/watch?v=k63nnnVXEBs

поучу тебя немного ооп

Ха, я действительно школьник, как ты угадал? :D

Бесишься знатно, да. Поржал.

UIjs 02.05.2015 16:55

Gozar, так она и есть у меня и в ангуляре, разве нет)?

Цитата:

Сообщение от Gozar
атрибуты мусор!

хорошо, видимо я что -то упускаю) и раз после могео обьяснения ты не поменял мнение значит я чего то не знаю, я задам этот заветный вопрос так и быть: почему атрибуты мусор?

Safort 02.05.2015 17:13

nerv_,
Цитата:

Safort, хочешь сказать, ты шаблоны руками пишешь, без движков?) Это же ад)
Почему? Мне норм)

nerv_,
Цитата:

фу, блин, ты на кофе пишешь. Буэээ Даешь es6
+1.

Safort 02.05.2015 17:13

Gozar,
Цитата:

Обычно ajax в componentDidMount.
Цитата:

А ещё нужно знать что можно вешать прослушку на изменение хранилища
Erolast,
Цитата:

Action.
Вот я накатал пример:
class MainComponent extends React.Component {
  constructor() {
    this.state = {
      listComponent: '' // дочерний компонент, содержащий какой-то список. Пустой потому, что пока ещё нет данных
    };
  }

  componentDidMount() {
    let _this = this;

    // подписываемся на изменения в хранилище
    AppStorage.on('change', this.update.bind(_this));

    // отправляем запрос на получение списка элементов
    fetch('./api/list')
    .then((res) => {
      res.json()
          .then((res) => {
            AppStorage.updateList(res); // обновляем хранилище и хранилище само вызывает метод update компонента MainComponent
          });
    });
  }

  update() {
    // обновляемся
    this.setState({
      listComponent: <ListComponent list={AppStorage.getList()}/>
    });
  }

  render() {
    return (
      <aside className="aside">
        {this.state.listComponent}
      </aside>
    );
  }
}



У меня, как вы видите, отсутствуют некоторые части Flux, а именно Dispatcher и ActionCreator. Можете пояснить зачем мне они тут нужны?
Набросал небольшое дополнение
AppDispatcher.register(function(data) {
  switch(data.eventName) {
    case 'update-list':
      AppStorage.updateList(data.params);
      break;
    case 'другое-событие':
      //..
  }
}

let ActionCreator = {
  updateList(data) {
    AppDispatcher.dispatch({
      eventName: 'update-list',
      list: data
    });
  };
};


Если я правильно понял, то преимущество Dispatcher'а в том, что в case'ах можно добавлять не один AppStorage.add(data.params), а множество обращений к хранилищу, так?
А ActionCreator это просто обёртка над методом dispatch() для краткости записи?

И ещё вопросец. Судя по этому комменту http://habrahabr.ru/post/249279/#comment_8255647 запросы к серверу лучше делать из ActionCreator'а или Storage. Можете показать на простом примере как вы это реализовываете(в т.ч. и инициализирующие запросы)?

Gozar 02.05.2015 17:15

Цитата:

Сообщение от UIjs
почему атрибуты мусор?

Захламляют разметку, при этом ничего особо ценного не привносят, потому и мусор. Когда его немного, то терпимо, когда много - визуальная каша ;)

l-liava-l 02.05.2015 17:19

Цитата:

нет не мусор, пруф http://www.youtube.com/watch?v=NbLfDvQsesk
То что ты назвал компонентом - это совсем не компонент, а просто темплейт.

Компонент это такая штучка, которая обьединяет в себе кучу директив и вообще какой то шаблонный блок, но при этом изолирована от внешней области видимости. (параметры туда передаем либо сервисом либо атрибутами)

Цитата:

ПС: атрибуты мусор! Особенно какие-нибудь левые типа ng- , я уж молчу про ui-, да и data- шлак левый, но что уж поделать, сделали по просьбе ламеров..
Не совсем с тобой согласен. Если смотреть со стороны обычного mvc, то да, контроллер сам должен знать всю инфу и расшаривание парметров в _статичное_ представление - костыль.

Но в mvw ты _конфигурируешь_ атрибутами viewModel эти атрибуты привязывают то или иное состояние представления к конкретному значению модели. А то что остается немного шлака от нагенеренного т.к это фигня.

UIjs 02.05.2015 17:23

Gozar, но ведь разметка и состоит из элементов и атрибутов. ты утверждаешь что атрибуты это мусор? я так и не понял почему.

ты сказал что они ни чего полезного не привносят, но они привносят полезный функционал. или не привносят его? например ui-scrollbar добавляет красивый скроллбар. или не добавляет? data-repeat итерирует элемент, или не итерирует? on-click вешает обработчик события. или не вешает? или данный функционал не полезный?


Цитата:

Сообщение от l-liava-l
То что ты назвал компонентом - это совсем не компонент, а просто темплейт.

то что я назвал компонентом это компонент а вовсе не темплейт. ты все напутал потому что невнимательно смотрел.

Цитата:

Сообщение от l-liava-l
Компонент это такая штучка, которая обьединяет в себе кучу директив и вообще какой то шаблонный блок, но при этом изолирована от внешней области видимости.

да

l-liava-l 02.05.2015 17:27

Цитата:

Если я правильно понял, то преимущество Dispatcher'а в том, что в case'ах можно добавлять не один AppStorage.add(data.params), а множество обращений к хранилищу, так?
Dispatcher нужен для того чтобы вызывать экшены не только в какой то последовательности, но и делать подписку на обновление других компонентов. Если понятно выразился канеш

Safort 02.05.2015 17:34

l-liava-l,
не совсем понятно, ведь подписку на обновление осуществляет сам компонент в componentDidMount(). Можно пример, так будет гораздо понятнее, наверно)

l-liava-l 02.05.2015 17:37

Цитата:

то что я назвал компонентом это компонент а вовсе не темплейт. ты все напутал потому что невнимательно смотрел. компонент это когда мы компануем много чего-то в одно. пересмотри видео внимательно и впредь будь внимательнее.
Цитата:

да
Што да, "твой компонент" зависит от верхнего контроллера потому что в атрибуты передал какие-то параметры, но не обернул это все.

На примере:


//page.html 
<div ng-controller="Ctrl as vm">
    <ng-include src="'./tpl.html'"></ng-include>
</div>

//tpl.html
<button ng-click="vm.doSomething()"></button>  //у кнопки обработчик - в верхнем контроллере, поэтому это темплейт


А это уже компонент
//page.html 
<div ng-controller="Ctrl as vm">
    <super-btn-pack size="'small'" resolve="vm.handler()"></super-btn-pack>
</div>

//super-btn-pack - директива имеющая свой контроллер, но не обязательно, главное что изолированная
<button ng-click="doSomething1()"></button>
<button ng-click="doSomething2()"></button> 
<button ng-click="doSomething3()"></button>

UIjs 02.05.2015 17:45

Цитата:

Сообщение от l-liava-l
Што да, "твой компонент" зависит от верхнего контроллера потому что в атрибуты передал какие-то параметры, но не обернул это все.

че ты несешь? компонент состоит из 3 сущностей, стиля, шаблона, и логики. данный компонент не содержит стилей ни логики а только шаблон. включи мозг маленько? ты основ даже не знаешь а еще со мной соприть берешься, не забывай мой уровень и свой! если что-то непонятно СПРАШИВАЙ, но не спорь, не тот уровень. Тут только kobezzza со мной на равных может разговаривать, и более того даже что-то новое говорить. Остальны в резком отрыве. Так что чтобы сэкономить время не выежывайся а просто спрашивай что непонятным показалось.

l-liava-l 02.05.2015 17:47

Цитата:

l-liava-l,
не совсем понятно, ведь подписку на обновление осуществляет сам компонент в componentDidMount(). Можно пример, так будет гораздо понятнее, наверно)
Ты подписываешься на обновления в диспетчере и там же ты можешь указать в каком порядке будут вызываться обработчики (а рассылает он всем) и есть возможность выполнить определенное событие только после того как пришло какое то другое (ну как бэ режим ожидания)

Вот тут все подробно описано елси не читал:
http://habrahabr.ru/post/246959/

UIjs 02.05.2015 17:48

l-liava-l, тебе не понятно почему я свой компонент называю компонентом? или что? обьяснять?

обьяснение для новичков: много чего-то компануем в что-то одно, называется компонент. мы скомпоновали элемент с кучей атрибутов в что-то одно под именем my-div. my-div - компонент. я достаточно подробно обьяснил или тебе тоже видео пилить?

l-liava-l 02.05.2015 17:53

Цитата:

че ты несешь? компонент состоит из 3 сущностей, стиля, шаблона, и логики. данный компонент не содержит стилей ни логики а только шаблон. включи мозг маленько? ты основ даже не знаешь а еще со мной соприть берешься, не забывай мой уровень и свой! если что-то непонятно СПРАШИВАЙ, но не спорь, не тот уровень. Тут только kobezzza со мной на равных может разговаривать, и более того даже что-то новое говорить. Остальны в резком отрыве. Так что чтобы сэкономить время не выежывайся а просто спрашивай что непонятным показалось
О всеведующий, не бомбите.

Цитата:

стиля, шаблона, и логики.
Это всем ясно что должны быть стиль шаблон и логика, но всю логику управления моделью ты описываешь где? в контроллере странички/верхнего блока и тд. (ну в примере так)

А компонент должен иметь _свой контроллер_ в котором описывается _только логика этого компонента._, тобишь быть изолированным. А если нет изоляции то это просто темплейт.

Gozar 02.05.2015 17:59

Цитата:

Сообщение от UIjs
не забывай мой уровень

Извини, забыл. Нужно было сразу тебя послать!

Атрибуты плохо, потому что они делают универсальным то, что должно быть неуниверсальным!

l-liava-l 02.05.2015 18:00

UIjs,

Если ты имеешь ввиду что в моем примере только шаблон, то тут интуитивно понятно что, к директиве привязан какая то логика, прст показал что эта логика находится не во внешнем блоке, а изолирована для компонента.. мб ты не понял :)
//page.html 
<div ng-controller="Ctrl as vm">
    <super-btn-pack size="'small'" resolve="vm.handler()"></super-btn-pack>
</div>

//super-btn-pack - директива имеющая свой контроллер, но не обязательно, главное что изолированная
<button ng-click="doSomething1()"></button>
<button ng-click="doSomething2()"></button> 
<button ng-click="doSomething3()"></button>


А если ты прос свой "компонент" то сам себе противоречишь
Цитата:

у данного компонента СУКА НЕТ ЛОГИКИ!!!!!!!! ТАМ ОДИН ШАБЛОН БЛЯТ!!!
Цитата:

3 сущностей, стиля, шаблона, и логики.

UIjs 02.05.2015 18:03

Цитата:

Сообщение от Gozar
Нужно было сразу тебя послать!

В смысле послать? у меня же уровень суперпрограммиста? зачем меня посылать? наоборот же надо слушать и учиться у меня. где логика в твоих словах?

Цитата:

Сообщение от Gozar
Атрибуты плохо, потому что они делают универсальным то, что должно быть неуниверсальным!

нет

UIjs 02.05.2015 18:04

l-liava-l, https://vk.com/maxmaxmaximus1?w=wall215464913_29295

просветляйся бро)

l-liava-l 02.05.2015 18:06

Цитата:

Атрибуты плохо, потому что они делают универсальным то, что должно быть неуниверсальным!
А что они должны делать по твоему?)) Инпуты и прочая фигня это ведь тоже компоненты, почему тебе не кажется создание кастомных нативным?

Да даже если на слово взглянуть
Цитата:

АТРИБУТ — аттрибут (от лат. attribuo — придаю, наделяю), необходимое, существенное, неотъемлемое свойство объекта.
Ты делаешь компонент и передаешь в него свойства. Что не так то?

UIjs 02.05.2015 18:07

Цитата:

Сообщение от l-liava-l
Ты делаешь компонент и передаешь в него свойства. Что не так то?

да он ахинею несет, аргументов нет вот и говорит типа "плоха!!! НИЗНАЮ ПОЧЕМУ НО ПЛОХА!11"

UIjs 02.05.2015 18:16

l-liava-l, и к слову я перепутал, компоненнт это составНАЯ чего-то, я не ЧТО ТО что из чего-то состоит. но сути не меняет. все директивы ангуляра - компоненты. у меня по этому так и называется ui.component('name', {options})

Gozar 02.05.2015 18:24

Цитата:

Сообщение от l-liava-l
Что не так то?

То, что ты берешь что-то похожее на то, что тебе нужно и с помощью атрибутов пытаешься подогнать под свою задачу.

Цитата:

Сообщение от UIjs
да он ахинею несет, аргументов нет вот и говорит типа "плоха!!! НИЗНАЮ ПОЧЕМУ НО ПЛОХА!11"

Вынь рога из ворот, а то неприятно с твоей жопой разговаривать.

Gozar 02.05.2015 18:26

Кастомные атрибуты - это костыли. И не нужно меня убеждать в том, что они очень полезны и без них никак. Я прекрасно знаю, что они и для чего сделаны и то, что они костыли я тоже знаю.

Gozar 02.05.2015 18:27

За разметку не должны отвечать атрибуты, да и за состояние тоже. html - элемент это объект-метка и выглядеть он должен как метка, а не как ёлка.

UIjs 02.05.2015 18:27

Gozar, нет не костыли.

Цитата:

Сообщение от Gozar
За разметку не должны отвечать атрибуты, да и за состояние тоже.

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

говоря на твоем быдлоязыке: РАЗМЕТКА это HTML который состоит из АТРИБУТОВ и ЭЛЕМЕНТОВ. За разметку ТОЛЬКО ОНИ И ДОЛЖНЫ ОТВЕЧАТЬ, лалка). Даже основ верстки не знаешь, о чем с тобой разговаривать можно. У нас слишком разные уровни.

Gozar 02.05.2015 18:28

UIjs,
В игнор.

nerv_ 02.05.2015 18:29

Цитата:

Сообщение от Gozar
Я не понял твою проблему

я говорю о том, что мне приходится писать больше кода в случае нативного jsx, нежели если я буду использовать "движки шаблонов для реакта"

Цитата:

Сообщение от nerv_
Не хватает из коробки ифоф и репитеров как минимум

биндинг обработчиков событий они же сделали коробочным, почему не включить еще несколько полезных, всегда нужных простых вещей. У меня есть предположение, что в одной из следующих версий реакта они это добавят.

Цитата:

Сообщение от Erolast
Я уже говорил - выноси каждый класс в отдельный модуль и понятия порядка просто не будет существовать.

так точно

Цитата:

Сообщение от Gozar
Теперь очевидно, что это не так.

выше я сказал, что написал только одни пример. Чуть спогодя еще посмотрю что к чему. Для меня важно понять, как и какими силами (много кода/мало кода) я могу строить приложения с использованием реакта.

Цитата:

Сообщение от Gozar
Мне не противен Angular, просто хочу быстрое приложение и адекватную доку.

+ дока есть
+ быстрое, вероятно, только с Angular 2.0 будет
Между прочим, я вчера когда писал свой первый пример, не нашел в офф. доке метод React.constructAndRenderComponent. Его там просто нет. И не только его.

UIjs, послушай льва, он дело говорит:
Цитата:

Сообщение от l-liava-l
компонент должен иметь _свой контроллер_ в котором описывается _только логика этого компонента._, тобишь быть изолированным. А если нет изоляции то это просто темплейт.

Цитата:

Сообщение от Safort
Почему? Мне норм)

все равно, что на жуквери писать уи

Субботнего срача тред :)
Мир, труд, май

Цитата:

Сообщение от Erolast
компонент Реакта и элемент верстки - это совершенно разные понятия. Компонент - это элемент интерфейса, инструмент для взаимодействия юзера с информацией. Компонент может рендериться в html, а может и нет

я знаю, что такое компоненты. Выше я писал, что читал про веб-компоненты, делал пример с ними, читал+смотрел_видео про полимер, и про реакт тоже.
Я говорю о том, что далеко не везде нужны компоненты и можно обойтись обычным шаблоном. Писать меньше кода, поддерживать меньше кода, меньше думать о взаимодействии компонент и жить счастливо :)

UIjs 02.05.2015 18:31

Цитата:

Сообщение от UIjs
За разметку не должны отвечать атрибуты

ага, а css классы не должны отвечать за стили)

l-liava-l 02.05.2015 18:31

UIjs,
Но ты то понимаешь что твой уровень намного ниже моего? Зачем ты говоришь что ты более профессиональный чем я, когда все на этом форуме знают обратное? Прочтет какой-нибудь новечек этот тред, послушает тебя и пойдет по изначально неверному пути.

Шаблон - это заготовочка такая и не обязателньо верстка или код, вставил и используешь. Но дублирование шаблонов - это не всегда так просто ведь они _могут зависить_ от логики на уровне абстракции повыше.

А компонент - это что то инкапсулировали и дали удобное апи для того чтобы можно было размножать как угодно.

На примере:

вот есть у тебя 2 странички и 1 шаблон (или как ты называешь "компонент")

//page1

<div ng-controller="ListCtrl as list">
    //writeCmment.html - тут заработает
</div>

<div ng-controller="TopicCtrl as topic">
   //writeCmment.html - а вот тут не заработает
</div>

//writeCmment.html
<input ng-model="list.input"></input>
<button ng-click="list.submit()"></button>


А вот если бы ты _все_ скопоновал в компонент (включая логику), а если логика есть но ты ее не скопоновал то у тебя получился шаблонный блок.

Аа вот если бы ты скопоновал все то получилось бы чо то типо

<write-comment></write-comment>

Пнятна?

UIjs 02.05.2015 18:32

Цитата:

Сообщение от nerv_
послушай льва, он дело говорит:

он говорит не дело а чушь, и ты тоже если ты с ним согласен.
он сказал что я назвал компонентом НЕ компонент, но я назвал компонентом КОПМОНЕНТ. он ОШИБСЯ и ты ТОЖЕ если ты с ним согласен.

UIjs 02.05.2015 18:34

Цитата:

Сообщение от l-liava-l
Но ты то понимаешь что твой уровень намного ниже моего? Зачем ты говоришь что ты более профессиональный чем я, когда все на этом форуме знают обратное?

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

Компоне́нт (от лат. componens, родительный падеж componentis — составляющий) — составная часть, элемент чего-либо[1].

Компоне́нта — составляющая чего-либо.



У меня в фреймворке есть 2 сущности, контроллеры и компоненты. Компонент это какой то кастомный атрибут или элемент. они являются компонентами потому что подходят под определение слова компонент. Говоря что они НЕ компоненты ты говоришь что они НЕ подходят под определение слова компонент, НО ОНИ ПОДХОДЯТ. следовательно ты ОШИБАЕШЬСЯ.

Ты понял в чем твоя ошибка?

Erolast 02.05.2015 18:37

Цитата:

Я говорю о том, что далеко не везде нужны компоненты и можно обойтись обычным шаблоном. Писать меньше кода, поддерживать меньше кода, меньше думать о взаимодействии компонент и жить счастливо
А, может, там реакт и не нужен?)

UIjs 02.05.2015 18:37

Давай еще раз, ты ж тупой:

Компонент это составляющая часть системы. У меня в фреймворке все строится из компонентов как из кубиков лего. Компонеты создаются ui.component('name', {options})

компоненты могут состоять из шаблонов (html шаблон который будет подставляться в те места где мы напишем имя компонента), стилей, и яваскрипт логики. отсутствие стилей в компоненте или логики, не делает его НЕ компонентом. Так как он и БЕЗ логики или стилей, продолжает подходить под определение слова КОМПОНЕНТ! Может быть компонент который вообще ТОЛЬКО СТИЛЬ добавляет, или вообще ничего не делает. Отсутствие какой либо из трех возможных составляющих компонента НЕ ДЕЛАЕТ его НЕ компонентом!

А ты думаешь что ДЕЛАЕТ. ПО этому ты ОШИБСЯ, и НЕ ВЕРНО думаешь. Ты ПОНЯЛ в чем твоя ошибка? Ты понимаешь БУКВЫ которые я пишу? Ты понимаешь слова которыми я разговариваю? Постарйся слегкаа напрячь мозг и понять что я говорю.

Например компоннет ui-button не имеет логики а содержит только шаблон и стиль. и при том ЯВЛЯЕТСЯ КОМПОНЕНТОМ, потому что подходит под ОПРЕДЕЛЕНИЕ СЛОВА КОМПОНЕНТ!! тебе картинку нарисовать??


Компоненты это то из чего мы компануем приложение!! Компоненты это СИНОИМ СЛОВА ДИРЕКТИВА, говоря на твоем языке!

Просто название директива в ангуляре намекает на декларативный стиль, мол ЗАДЕКЛАРИРОВАЛИ, ДАЛИ УКАЗАНИЕ, ДИРЕКТ! А у меня более приятное и правильное по смыслу название ui.component это одно и то же. Ты понимаешь буквы которые я пишу? Бууковки, собираются в словаааа. Ну же, напряги головушку. Читай буковки и ты поймешь словааа ты справишься.



Gozar 02.05.2015 18:50

Цитата:

Сообщение от nerv_
Между прочим, я вчера когда писал свой первый пример, не нашел в офф. доке метод React.constructAndRenderComponent. Его там просто нет.

Логично. А можешь объяснить зачем он тебе? А также где написан совет, чтобы ты им пользовался и для чего?

Gozar 02.05.2015 18:53

UIjs,
Не сри капсом, ты ещё тот отморозок. Не в состоянии представить мир без атрибутов.


Часовой пояс GMT +3, время: 02:49.