All streams
Search
Write a publication
Pull to refresh
55
0
Алексей Куреев @xamd

Sr. Software Engineer @ Twilio

Send message
Это называется «dumb components» и в React 0.14 реализуется с помощью обычных функций:

// A functional component using an ES2015 (ES6) arrow function:
var Aquarium = (props) => {
  var fish = getFish(props.species);
  return <Tank>{fish}</Tank>;
};

// Or with destructuring and an implicit return, simply:
var Aquarium = ({species}) => (
  <Tank>
    {getFish(species)}
  </Tank>
);

// Then use: <Aquarium species="rainbowfish" />

Взято из пресс-релиза 0.14
«Так на секундочку» — 115 скачек за последний месяц + 14 звёзд на GH и 2 issue за 5 месяцев. Я бы не полагался на подобную библиотеку при проектировании приложения, особенно если она идёт вразрез оф. идеологии.

Видимо, я не совсем ясно выразился: разумеется, сделать можно всё что угодно — это js, в конце концов. Вы так же можете использовать родной хак: facebook.github.io/react/docs/two-way-binding-helpers.html, однако даже на этой странице написано, что React спроектирован как one-way data flow система.
Под все задачи свои инструменты. Ведь чтобы развести костёр вы используете зажигалку, а не камни, верно? Но не поймите меня неправильно: подключать весь underscore ради _.debounce или jQuery из-за селекторов, разумеется глупо. Радует, что авторы библиотек, выходящих в наше время, думаю о гранулярности своих решений и не создают огромных монолитных монстров.
Ну бросьте, мы скромные ребята, ни над кем возвышаться нам не надо. Понятное дело, без бэка нам никуда :) Но все же Вы не совсем точно заметили ошибку (имхо): бизнес логика будет дублироваться только для валидации данных. Логика процессинга этих данных никогда не перекочует на фронт и навсегда останется на бэке из соображений безопасности. Однако, во всех SPA на фронт выносится работа с роутингом, данными (агрегация и финальный процессинг), рендеринг (я имею ввиду механизм составления шаблона (и иногда кое-что ещё), так-то рендеринг всегда происходит в браузере), ну и всякие анимашки и прочее.

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

И да, разумеется мы всегда будем не разлей вода, работы и правда всем хватит.
Конечно, React вообще не должен ничего знать о данных, которые поступают в его компоненты! Поэтому и появился flux — чтобы решить проблему работы с данными и коммуникацией между компонентами. Довольно тяжело сейчас говорить о React без упоминания Flux.
Т.е. проблема разделения вьюхи и Js остается

По каким-то причинам Вы считаете, что View — это не JS? React представляет собой идею функционального подхода к програмимрованию пользовательских интерфейсов, соответственно не имеет ничего общего с MVC и стараться «подбить» его к знакомой терминологии не имеет смысла.

Если IDE не поддерживает JSX то все совсем не удобно.

Ну, во-первых, уже, наверное, не осталось IDE, которые не поддерживают JSX, а во-вторых Вы всегда можете писать без JSX через React.DOM.div и т.п.
1. О каких темплейтах Вы говорите?
2. Никакого two-way data-binding. Все свойства передаются от родителя к потомку и никак иначе. А вообще, для работы с данными в React существует множество библиотек (например, redux)
JSX используется в качестве препроцессора для улучшения «читабельности» кода. «Под капотом» оно транслируется в ES5-совместимый формат, т.е.

render() {
  return <div>hello</div>;
}


будет транслирован в

render() {
  return React.DOM.div(null, 'hello');
}


Разумеется, вы можете использовать вторую версию без каких-либо препроцессоров. Об это подробнее на оф. сайте. Так же, в версии 0.14 работа с DOM вынесена в отдельную библиотеку react-dom.
Пока только пробежал глазами, но уже видно, что статья жутко интересная. Теперь надеюсь, что моих знаний хватит, чтобы понять её в полной мере. Большое спасибо!
И вам! Я хочу верить, что мои правнуки захотят вернуться на родину своего прадеда, потому что общество, которое построете Вы и люди, разделяющие Ваши взгляды, будет намного лучше европейского.
Что касается адаптации к социуму я категорически не согласен: а кто тогда этот социум создает?

Социум создают люди, которые в него входят.

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

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

Если вы не хотите строить для себя и своей семьи лучшие условия, а готовы «приспособиться» путем приспособления к подходящему вам социуму, уверяю вас: вам будет с каждым днем все хуже и хуже жить ЗДЕСЬ. Ведь ЗДЕСЬ будет не под вас настроено, не вами создано…

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

Если вы этого не понимаете — у вас один путь: бегство (в прямом или переносном смысле — не важно). И это очень плохо.

Я не хочу говорить ничего плохого про Россию, но для себя я выбрал, как Вы выражаетесь, «бегство» из неё — по сей день доволен этим, вряд ли для меня и моей семьи в этом есть что-то плохое.
Да, вероятно отчасти Вы правы. Возможно, «именитость» тренера — это уже детали бизнеса, но не думаю, что много человек пойдут на воркшоп от no-name специалиста с пустым гитом (вероятно, я ошибаюсь, но на слуху почему-то только воркшопы от активных членов коммьюнити).

К сожалению, я не вижу общее правило, которое я пытаюсь опровергнуть. Если Вы считаете воркшопы бизнесом (в принципе, я согласен), то я вроде бы, ничего не опровергаю. Мне просто не нравится думать об open source как об инструменте бизнеса. Для меня это нечто сродни благотворительности в IT среде. Сама идея получения денег из open source проекта является несколько кощунственной (хотя есть множество людей, которые организоввывают благотворительность из корыстных побуждений). Мой путь (этим, вероятно, можно дополнить статью) — заработок «репутации» в своей среде благодаря мои проектам. Имея хорошую репутацию, всегда можно найти ей применение (консультирование, воркшопы, видеокурсы и т.п.).
В своём комментарии я ни разу не сказал, что считаю Ваше мнение ошибочным. На самом деле я завидую масштабам Вашего альтруизма. Видимо, мы выросли и жили в очень разной среде, отсюда и разница во взглядах. Как я уже сказал выше, мы адаптируемся к социуму, в котором живем. Поэтому наши семьи и круг общения во многом определяют наши взгляды на мир. Меня воспитывали в лучших традициях светского гуманизма и я считаю право на своё счастье и счастье моей семьи наивысшей целью, которую я преследую. Для меня построение лучшего общества не является целью; лучшее общество как конечный продукт является средством достижения моих целей (или, в данном случае, признаком достижения цели). В тот же момент я понимаю, что вы придерживаетесь других взглядов, но ни капли их не критикую — это Ваш путь и судить его есть право только у Вас. То, что я хотел сказать в предыдущем комментарии относится исключительно к ситуации в стране в данный момент времени (и на мой взгляд трезво отражает её потенциал к изменениям), но никак — к Вашим личным суждениям.

Не буду скрывать, мне не импонирует ваше желание вовлечь людей, не желающих того, в процесс осуществления Ваших целей. Если Вы хотите построить идеальное государство, стройте его с единомышленниками и не вовлекайте в этот процесс людей с другими взглядами на мир.
Что-то я совершенно не согласен с Вашей статьей. Я далеко не «звезда гитхаба», но у меня есть несколько проектов, которые используют люди и для этих людей я упращаю задачу, экономю их время и деньги на написание подобной реализации необходимой функциональности. Признаться честно, я не гонюсь за материальной составляющей open source, мне просто нравится это делать, потому что, как я уже написал выше, это помогает другим людям. Что касается заработка денег, то я вижу несколько путей: организация воркшопов на основании ваших технологий (как, например, сейчас делает Дэн Абрамов и множество прочих людей в JS коммьюнити, имеющих успешные проекты). Так же вы всегда можете спокойно жить на донат со стороны других разработчиков. Как показывает опыт того же Дэна, можно спокойно получать 5 тыс. евро+ имея хороший проект для активного коммьюнити.
Разумеется, варианты, предложенные Вами (но я так понял, что вы предлагаете только один вариант — построение бизнеса вокруг своего продукта) тоже будут приносить деньги, если ваш продукт будет нужен людям, но как по мне, это путь человека, которому скорее интересен бизнес, чем сама разработка. Каждый выбирает для себя.
Имея такое расслоение в обществе как в России, невозможно, как вы выразились, «жить, как в Израиле». Человек адаптируется к социуму, который его окружает, отсюда и модель поведения. Даже если вы будете примером для подражания, вы не сможете выйти за рамки своего класса. Чтобы что-то действительно изменилось, придется найти большое колличество людей, которые поддержат ваш альтруизм на всех соц. уровнях. Однако, что-то мне подсказывает, что люди, которые кормятся от этой кормушки и так живут хорошо и не собираются ничего менять.
Я вообще, честно говоря, не понимаю, зачем все эти трюки с N раз непраивльно введенным паролем. На моём 5c я могу просто вызвать Siri удерживанием Home и спросить сколько время, на что получу ровно такой же ответ, как и в видео
Ну, признаться, Вы кроме классов, блочных переменных и деструкторов ничего не используете. Возможно, статья была бы более информативна, если бы вы параллельно рассмотрели реализацию на ES5 и более очевидно указали бы на выигрыш, который программист получает, используя новый синтаксис.

Но пример выбран, на мой взгляд, не самым удачным образом.
Бытует мнение, что webpack лучше browserify. Честно говоря, я его не разделяю. Мне нравится browserify и я хочу, чтобы люди, разделяющую мою точку зрения, имели схожий DX с пользователями webpack. Возможно, Вам будет интересно прочитать пост от substack'а (создателя browserify) «Browserify для пользователей webpack»
Здравствуйте!
у него есть сервер, клиент, интеграция с grunt/gulp и их watch

Все вотчеры работают поверх fsevents, в моём случае это библиотека, которую использует watchify, например. Интеграция с grunt/gulp при работе с browserify? Ну не знаю, лично я не люблю ни gulp ни grunt, т.к. на мой взягляд большую часть настроек можно прописать в том же package.json в разделе scripts. Вот отличная статья на эту тему.

живое обновление css

browserify и работа с css — разные вещи.

и полная перезагрузка страницы при других изменениях

Именно этого я и стараюсь избежать

Еще к нему можно писать плагины — например перехватить обновление js файлов (или какого-то конкретного — в вашем случае diff-файла) и дальше делать с ним что угодно

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

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

К сожалению, не всё так просто: во-первых, меня не устраивает, что проект платный. Я люблю open source и не хочу строить своё решение поверх платного проекта. Во-вторых, сервер и коммуникации по веб-сокетам это не уберет. Вернее, можно, конечно, заменить сокеты long-polling'ом, но смысла в этом я не вижу, в данный момент все популярные браузеры поддерживают сокеты. Что касается сервера — заменить — не значит убрать. Как вы думаете, работает livereload? Он точно так же создает свой сервер и наблюдает за файлами, а различные плагины к хрому и script-коды и т.п. просто выступают в качестве клиента (у меня это browserify transforms).
В данный момент очень плотно работаю с React (разделяю монолитное Rails приложение на клиент-сервер), многие формы, такие, как форма оплаты, например, имеют несколько шагов. Очень удобно не заполнять/прокликивать первые N шагов, а просто применять новые изменения к нужному шагу «на лету». Так же просто довольно удобно работать — на одном мониторе браузер, на ноутбуке текстовый редактор. Нажал cmd + s — в ту же секунду увидел результат. Ну и вёрстка становится в разы веселее :)

По поводу веб версии телеграмма и пр. — это иное. Моё решение исключительно для разработчиков, дабы увеличить удовольствие от разработки и сделать сам процесс ещё увлекательнее, но никак не изменить поведение программы. Моей целью было реализовать react-hot-loader для browserify

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Date of birth
Registered
Activity