Pull to refresh
2
0
Кирилл Агалаков @raveclassic

User

Send message

А как же минификация?

Ну где ж стандартными, у вас самопальная мидлварь.
К слову, ваше решение поддерживает отменяемость и рейсы? А тестируется так же удобно как саги?

Тут смотря с какой стороны подступиться. Например ангуляр, который весь такой production-ready, во всю опирается на бета-декораторы, и ничего.
К тому же, версия на хорошей поддержке тоже использует эту ерунду. Понятно, что это не очень здорово, но оно работает и будет поддерживаться. (надеюсь)

Не особо понимаю, о чем вы. Айтемы есть, списки есть. Маркап айтемов поменялся, списков нет. Маркап топ-левела поменялся — юзеры теперь в модалке. Задача решена. Если нужны доп. условия — пишите, реализуем.


Вы же не будете переписывать всю композицию компонентов, когда в требованиях проекта вдруг появится «сделать существующий список юзеров в модальном окне»

Почему всю? Схожу к юзерам, заверну в модалку, вы разве не так сделали?

Внутри просто сидит аналог Portal

Усложним задачу

cost User = ({avatar, name, rating}) => (
  <div>
    <img src={avatar}>{name}
    <UserRating rating={rating}/>
  </div>
)
const Product = ({photos, title, price, currency}) => (
  <div>
    <ShowCase photos={photos}/>
    {title} - {price} {currency}
  </div>
)
const Users = props => <List Item={User} {...props}/>
const Products = props => <List Item={Product} {...props}/>

Предположим у нас есть некий компонент модального окна (Modal)
Теперь мы хотим, чтобы список пользователей из предыдущего примера оказался в модальном окне и конечно же мы не хотим ничего менять, а просто обрамить в компонент модалки:

const Modal = ({autoclose, onClose, children}) => (
  <div class="modal">
    <div class="modal-header">
      <button class="close">x</button>
    </div>
    <div class="modal-body">{children}</div>
  </div>
)

Мысль не потеряли? Ну так вот, надо сделать, чтобы макап модалки отрисовывался в контексте родительского компонента.

const Parent = ({users, products}) => (
  <div>
    <Modal autoclose={true} onClose={handleClose}>
      <Users items={users}/>
    </Modal>
    <Products items={products}/>
  </div>
)

Так что-ли?

Слушайте, ну хоть эту ветку не сводите в свой бессмысленный срач, я вас очень прошу. Давайте по существу.


Хоть и безымянный)
Отличаются только структура данных и разметка.

Можно же контент внутри users и products (та самая разметка) воспринимать как "анонимный компонент"? Можно. Все-равно ж он потом вставляется через >content в списке


Дальше, вот ваш пример:


users: ListView,
products: ListView

Так же можно выдать имена компонентам:


const Users = ListView
const Products = ListView

// а почему у нас тут один persons на всех, если должны быть разные products и users

Окей, не заметил, будет так:


const Lists = ({users, products}) => (
  <div>
    <Users items={users}/>
    <Products items={products}/>
  </div>
)

По остальным комментариям — не вижу разницы между анонимным маркапом и анонимным компонентом (или с промежуточным именем).


И давайте дальше общаться в этом ключе, не скатывайтесь в очередной флейм

Ох ну и написали ж вы, я аж читать эту ахинею устал… Не пишите столько больше, в моем неокрепшем мозгу буфер маленький еще :)


Ясно излагать мысли у вас не очень выходит, но это дело наживное, все получится. А флеймить — да, тут вы мастер, снимаю шляпу! Вы заняли почетное первое место в моем списке агрессивных неадекватов, поздравляю :)


Так что давайте я пойду вам на встречу и соглашусь с вами по каждому пункту, просто потому что могу, сегодня распродажа. Очевидные вещи вы все-равно не усвоите, а топтаться на месте мне надоело. Ну а вы уж там дальше думайте, что хотите, это ваше дело

А пожалуйста


const lists = ({persons}) => (
  <div>
    <List Item={
            ({name}) => <li>{name}</li>
          } 
          items={persons}/>
    <List Item={
            ({name}) => <li><span>{name}<span></li>
          }
          items={persons}
  </div>
)

Но так удобнее:


const lists = ({persons}) => {
  const Item1 = ({name}) => <li>{name}</li>
  const Item2 = ({name}) => <li><span>{name}</span></li>
  return (
    <div>
      <List Item={Item1} items={persons}/>
      <List Item={Item2} items={persons}/>
    </div>
  )
)

Вот вам и onthefly. Вам уже везде пафос мерещится?

А пожалуйста


const Person1 = ({name}) => <li>{name}</li>;
const Person2 =({name}) => <li><span>{name}</span></li>;
const persons = [
  {name: 'Foo'},
  {name: 'Bar'}
];
const persons1 = <List items={persons} Item={Person1}/>;
const persons2 = <List items={persons} Item={Person2}/>;
//или
const Person1List = props => <List Item={Person1} {...props}/>;
const Person2List = props => <List Item={Person2} {...props}/>;
const persons1_2 = <Person1List items={persons}/>;
const persons2_2 = <Person2List items={persons}/>;

Как хотите, так и комбинируйте. Только язвите поменьше :)

Туда. Да уж, маловато =( Но вроде как AST хоть генерить можно

аа, такое да
кстати, вы не смотрели свежее compiler api? там вроде даже доки обновили. может там где-нибудь можно подоткнуться?

Для начала вам нужно будет покрыть flow-аннотациями весь фреймворк. А такие вещи, как keypath вообще никакой flow проверить не сможет

Если я вас правильно понял, то TS-таки смог, хоть и через ж: lensFromProp

Слушайте, да вы просто кладезь упоротости! Я вас в закладочки себе добавлю. Доеду до офиса, коллегам покажу, поржем.
Ну а теперь к делу, и конечно же большую часть этого поноса я так и быть проигнорирую, тут все же люди вокруг :)


А что вы умеете решать задачи только таким способом? Приводите пример, где вам нужен НОС, а я вам расскажу как сделать без того костыля. А то вы только бла-бла можете, примеров кода от вас дождаться сложно, а на те, что пишете смотерть без слез нельзя.

А чего далеко ходить, вон вам пример ниже со списками и динамическими айтемами.


И что ФВП? Это что панацея какая-то? Раз он существует, то теперь другие подхода нафиг?

Я вам не продаю ФВП, а лишь говорю, что без наследования (которое, к слову, тоже далеко не панацея) люди прекрасно обходятся.


Видимо только у таких крутых пацанов как вы не бывает таких кейсов.

Они единичны и бывают пару раз в год.


Сам Jquery чем-то обидел, что вы так реагируете? Или это комплексы, что на реакте кроме унылых компонентов ничего больше нет?

Jquery ничем не обидел, меня вообще трудно обидеть :) Я просто удивляюсь как товарищи вроде вас начинают направо и налево кукарекать, что моднявые фреймворки не нужны, архитектура не нужна, все уже написано на жквери, завернуть во что-нибудь и поехали. Ну ок, идешь, смотришь эти плагины на этом хваленом жквери и рыдать хочется от той жести, что там понаписана на коленке.


Ой, ну уж вы то мне это рассказывать будете. Может вместо болтавни код покажете, как вы ответы бекенда в ui компоненты передаете. Вместе посмеемся)

Буду, буду. Не хотите меня слушать, тогда книжки почитайте умные, благо в них во всех одно и то же талдычится. Как спустить ответ от бэка в интерфейс? Вы сидите, надеюсь, а то упадете — через props. В каком виде этот ответ лежит в источнике уже не относится к реакту, но есть 2 популярных решения redux и mobx. В ангулярах та же самая история. И во вью. Да даже в эмбере (вроде). А теперь смейтесь, смейтесь и фигачьте getJSON в разметке. Когда-нибудь перестанете это делать, надеюсь.


Вы похоже больших приложений и не писали в жизни. Ну чтож, не расстраивайтесь. Я понял, что вы молод и наивен в первом же комментарии, про университет))
Вам небось лет так 25, не больше. Разработкой то лет 5 хоть занимаетесь? )))) Может уже пора курсы по программирования открывать? ))))

Это удобная позиция, конечно же :) Вот только далека от правды. Если бы у меня была сейчас возможность снова пройти путь от джуна, я бы в жизни с вебом не связался, а теперь поздно уже. Но если вам так больше нравится, и это вас больше тешит, пусть мне будет 18 и я буду первокурсником, а вы мне будете рассказывать как большие дяди колбасят энтерпрайз. Мне в принципе пофиг на модель общения, лишь бы вы чушь не городили.


Прям глаза мне раскрыли))) А я то думал, что это такое в бандле после компиляции. JSX — это такой же новый синтаксис, который надо учить.

А что вы сразу под юбку в бандл? С тем же успехом — все машкод. JSX не пытается спрятать мощь языка, а только наоборот. А на аналоге чистых createElement пишут и на elm, и на purescript, и на scalajs, и ничего, не болеют.


DSL или не DSL разница то? Я вообще так написал, чтобы больше на ваш любимый реакт походило. Думал вам понравится, ну типа все тут, все в одном месте.

Разница большая, почему — ответ выше. Что вы с этой любовью моей к реакту носитесь? Ревнуете? Да и не люблю я его вовсе, но он решает свои задачи лучше остальных, гораздо лучше.


Дурью объединять код и разметку только Реакт додумался заниматься. В Ractive в основном исползуются отдельные файлы шаблонов с нормальным синтаксисом

Конечно, если колбасить запросы в "разметке", то это будет дурью. Насчет нормального синтаксиса я бы попорил, но не буду, субъективное это все.


Вы в который раз путаете возможность что-то сделать, с деланием этого. Неужели у вас такое ограниченное сознание? Может тогда к лучшему, что реакт такой примитивный, вы хоть себе в ногу не выстрелите, не даст вам.

В какой какой? Да бросьте, babel-runtime на клиент (если createElement не нравится) и реакт из cdn и колбасьте на здоровье прям в голом index.html.


1) обернуть стороннюю любу (для недалеких — не обязательно jquery плагин) удобным и эффективным способом? — нет, не может
2) может ли реакт интегрировать в себя объект произвольного типа (класса) и сделать его реактивным (хотя бы в одну сторону)? — нет, не может
3) Может ли реакт двойное связывание? — нет, не может
4) Может ли реакт точечное обновление DOM? — нет, не может
5) Может ли реакт обойтись без костылей, типа НОС? — нет, не может
6) Реакт что то вообще может? Не выявлено.

Вы из-за ограничений кругозора не видите общей картины:


  1. Они не нужны в экосистеме реакта, так есть более удобные и безопасные вещи для достижения такого же результата. Они есть и их много.
  2. Он и не должен, это либа для ui, а вы с этого беситесь. Ваша любимая реактивность прикручивается с пол пинка (но не в вашем любимом виде, естественно, так было бы слишком просто)
  3. Двойное связывание не нужно. Чувствую сейчас придет vintage и скажет обратное, но нет, не считается.
  4. Оно и не нужно. Для этого есть vdom, позволяющий вас забыть уже наконец о том, что DOM вообще существует. А — абстракция.
  5. HOC — костыли только в вашем мире. Да и в целом может.
  6. Все может

Теперь можете вы мне предложить челендж. Покажите «класс» на реакте, чтобы я сказал «вау, я так не смогу»))))

Я вам не буду ничего предлагать, устал уже, с вами беседа какая-то нездоровая выходит, вы слепо верите в свой больной мир и не видите картины. В с какой-то непонятной агрессией хейтите реакт, видимо насолил чем-то. Есть одна вещь, которую кроме реакта не может никто — рендеринг другого компонента в качестве хоста без лишней обертки в DOM. Если ractive так умеет — напишите, но бога ради, не надо орать, что это не нужно, я устал. А так, вы пишите дальше свои проекты на своем несчастном ractive, кто я такой, чтобы вам мешать. Если вам нравится, я за вас только рад, не продавайте только его под соусом, что все кругом дураки, а я один умный, договорились? :)

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

HOC улыбаются и машут вам ручкой :)


const List = ({Item, items}) => (
  <ul>
    {items.map(item => <Item>{item}</Item>)}
  </ul>
)

Я прям on-the-fly без дополнительной конфигурации

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

За тем, что так всю жизнь делали в жкверях. $('form#login input[type=password]').change(handleChange) Помним, скорбим

Нет ничего, что вы можете решить с помощью НОС, чего нельзя решить в Ractive используя просто компоненты.

В компонент можно передать другой компонент и там его отрендерить?


Нам лишние подпорки не нужны.

ФВП смотрит на вас с удивлением (то же самое). Мир и без наследования прекрасно себя чувствует, учите матчасть, как говорится.


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

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


Дальше начались странные и двухсмысленные подколы.
Дальше продолжать? Может это по-вашему аргументы?
Вообще-то это я про ваш стиль мышления писал, который явно на лицо.

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


Вместо кучи jquery плагинов с говнокодом, у нас теперь куча react компонентов с тем же навозом внутри.

Или ractive с кучей говна внутри вдовесок говну на jquery — браво! Ну правда, что за набрасывания :)


Примеры хоть привели бы. Вангую, будут енхансеры для стора редакса.
Вообще-то мы начали с примеров. Читайте тред.

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


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

Ну вы там копайтесь дальше в песочнице со своими ивентами. Где у вас разные куски ui что-то где-то слушают у других кусков ui. Ну правда, jquery головного мозга, перекочевавшее в "реактивность".


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

И в ajax ходите тоже оттуда же. При наличии нормальной архитектуры, а не уровня туду-листа, связь с бэкендом или чем-либо асинхронным у вас будет в другом слое, а не в ui. Учите матчасть, как говорится.


Дальше вы этот get прокините куда-нить в компонент.
Блин, но вот вам придется везде, где юзаете промисы писать эту портянку с then -> setState бла бла, неужели не утомляет? Зачем вам это? Разве не лучше так:

Нет не лучше. Еще раз, вы в упор не видите, что я пишу? Я не использую никаких промисов в ui слое и уж тем более походов за данными, максимум анимации, относящиеся к, тадаам, ui слою.


Или может реакт такое просто не умеет делать, поэтому вы и пытаетесь меня убедить что это все фуфло? Да, думаю так и есть.

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


Ой, не надо этих сказок.

Вы что за бред несете. Обратитесь к докам чтоли ради приличия. JSX — это js, тэги — это просто вызовы createElement. А каша из


<div>
                <select value="{{ value }}" on-change="@this.handleChange(@event)">
                  {{#options}}
                        <option value="{{ .value }}">{{ .text }}</option>
                  {{/options}}
                </select>
                Value: {{ value }}
             </div>

это самая обыкновенная каша на DSL внутри строкового шаблона.


Все потому что в отличии от вас, для меня она не must-have.

Что еще раз говорит об уровне ваших проектов. Вон даже хваленый полимер, который весь из себя такой нативный, без билд-процесса не может. Я уж не говорю про статическую типизацию, без которой на более менее вменяемом проекте никуда.


Вы бы сперва на вопросы ответили, а то от вас только и слышно:

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


Вот и вся оргументация.
Ну так я вам предложил пари, вы согласились. Говрю «можете реализовать это?», а вы мне «могу, но криво». Говорю «а это можете?», а вы мне «могу, но так не надо делать, потому что реакт против» и так далее. Ну а в целом, считаю что реакт сильно испортил фронтенд ((((

А ЧТО вы там предложили то? Обернуть jquery плагин? Дык они и за бесплатно никому не нужны, конечно будет трудно с ними работать декларативно, потому что они трудные бай дизайн. Курам на смех такие пари.


Вы и половины вещей не сможете сделать на реакте, без костылей и кучи компонентов-оберток.

Что, померяться удумали? Нет уж. Сама идея ходить в jquery за дейтпикерами уже говорит об ущербности ractive не только как движка, а еще и как экосистемы. Так-то кроме связывания этих плагинов несчастных (про которые уже реально хватит) больше "особенностей" не видно.


А вы почему мир оцениваете? По кол-ву реакт компонентов? Ангуляр тоже думал, что будет любим вечно, тоже в свое время ломал концепции и строил свои, а сейчас где он?

Я оцениваю мир по трудозатрам команды на разработку и поддержку тяжелых проектов, а не по статьям с очередными убийцами чего-либо. Из всего по несколько раз опробованного, выигрывает реакт. Не было бы у нас туевой кучи пересекающихся ui-китов в довесок к десятку проектов, а просто разовые приложения, то выиграл бы, скорей всего, ангуляр 2 ибо возни с конфигурацией меньше.

А вы будто знаете Ractive и пробовали его? Классика — это когда «ой мы так не делаем, это не react-way»

Так я и не набрасываю же, это все вы, микрокомпоненты! нет реактивности! примеры фуфло! Ну и прочие подобные накопившиеся "обиды". Это все от ractive :)


«у нас этого нет, но нам и не нужно, у нас ведь концепция»

Ну а неспособность понять концепцию не говорит, что она не нужна. Точно так же как и не нужны эти ваши кривые плагины.


Это все прекрасно, но только до поры до времени, когда не столкнетесь в более хитрой задачей чем композиция готовых реакт-компонентов. Я то хотя бы пару проектов на React писал, хоть и довольно давно

Ох ты, расскажите мне, желторотому, как большие дяди колбасят энтерпрайз :)


Только все больше статей не тему «реакт не торт, теперь у нас Vue (или любой другой новичок)»

Оценивать мир по статьям это конечно удобно и весело, да

1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity