LINUX.ORG.RU

Посоветуйте фронт

 ,


0

2

Выбираю фронт для SPA. Интересует вот что выбрать. Пока выбираю между Angular2+, Ember, Backbone, Marionette и React+Redux. Присматриваюсь к Elm. Проект сугубо домашний. Торопиться некуда. Основное требование - хорошая совместимость с мобильниками и простота/документированость (не куча туторов, а именно хорошие официальные доки). Первый - не нравится TypeScript. Ember очень тяжелый и жирный (хотя по нему много опыта), Backbone понравился когда делал на Electron приложение, но не нравится jQuery стайл (ближе ES6). А вот React... Ощущение костылей и велосипедов везде. С марионетом не работал - ничего не могу сказать. В общем - прошу совета). Планируется ресуср на подобии GOG

Ответ на: комментарий от bvn13

С Vue.js, можно стартануть за неделю. Смысл тратить 2 месяца на то, что можно достичь с Vue за неделю и меньше возни с компонентами, вебпаками и т.д.

th3m3 ★★★★★
()
Ответ на: комментарий от th3m3

Это какие интересно? Если я правильно понимаю, то для старта достаточно два пакета react и react-dom. Там очень простой API, не вижу вообще никаких сложностей. Дальше ты сам решаешь, что-то своё велосипедить или redux подключить. Если нужен роутинг, можно незадумываясь react-router брать, т.к. насколько я знаю, больше ничего и нет. Что там ещё из жизненно необходимого? Всё по-моему.

Kilte ★★★★★
()
Ответ на: комментарий от bvn13

Я уж было подумал что вы про сам react. Ну и тогда какая разница что там используется?

Kilte ★★★★★
()
Ответ на: комментарий от Kilte

А новичку откуда это всё знать?) Нужно кропотливо читать доки. По чуть-чуть набирать свой арсенал. Ещё и к jsx привыкать и всей этой философии. Потом зайти на Facebook, офигеть от того, как там тормозит интерфейс в 2017 году. И убежать на Vue.js :)

th3m3 ★★★★★
()
Ответ на: комментарий от th3m3

А новичку откуда это всё знать?) Нужно кропотливо читать доки.

Сам спросил, сам ответил. Не прям уж кропотливо. Достаточно по quick start пройтись и можно уже что-то писать, а в документацию смотреть по мере необходимости.

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

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

Kilte ★★★★★
()
Ответ на: комментарий от th3m3

th3m3

Потом зайти на Facebook, офигеть от того, как там тормозит интерфейс в 2017 году.

Вот, кстати, да, Facebook крайне отталкивает именно медленным интерфейсом, тот же ВКонтакте на голову выше в этом плане.

ravdinve
()
Ответ на: комментарий от Kilte

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

А разметка в коде - позапрошлый.

anonymous
()
Ответ на: комментарий от anonymous

Ну неет. Я вот как-то спорил с ritsufag на эту тему. Был задан простой вопрос: «Зачем разделять логику представления от представления?». Пришли к тому, что это оказывается бизнес-логика. о_О.

Kilte ★★★★★
()
Ответ на: комментарий от Kilte

Был задан простой вопрос: «Зачем разделять логику представления от представления?».

Незачем. Для этого и придумали специальный дсл (шаблоны). А JSX - шаг назад, к пхп.

anonymous
()
Ответ на: комментарий от Kilte

Но ведь вас никто не заставляет всё пихать в компоненты.

Так а какая разница куда пихать? один хрень выглядит как говно.

anonymous
()
Ответ на: комментарий от Kilte

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

anonymous
()
Ответ на: комментарий от anonymous

технологиям 20-летней давности.

Это здесь вообще не причём. Речь шла о том, как это выглядит.

наработанные современные подходы

Эти ваши «современные» подходы ничерта не удобны и привносят только лишние усложения. Управляющие конструкции выполненные с помощью js, а не какого-то альтернативного синтаксиса это плохо и возврат в позапрошлый век? А по-моему как раз таки наоброт, убрали лишнюю прослойку и стало только лучше. То, что есть индивиды, которые сгребают всё в одну кучу — это только их проблема.

Kilte ★★★★★
()
Ответ на: комментарий от anonymous

А разметка в коде - позапрошлый.

https://medium.com/@housecor/react-s-jsx-the-other-side-of-the-coin-2ace7ab62b98

Шаблоны на фронтэнде — прошлый век. Они хороши только на бэкэнде потому, что там они действительно описывают статичный (для бэкэнда) интерфейс. </thread>.

x3al ★★★★★
()
Ответ на: комментарий от Kilte

Речь шла о том, как это выглядит.

Ну так как говно выглядит. Потому что говно. Кто-то долго ел говно и привык к вкусу говна - так что ж?

Эти ваши «современные» подходы ничерта не удобны и привносят только лишние усложения.

Они же не просто так появились. До них jsx-подобные подходы использовались не один десяток лет и были признаны кривым. Шаблоны пришли на замену jsx и оказались значительно более удобным решением, с меньшим количеством недостатков. Да, недостатки есть и у шаблонов - но _меньше_.

Управляющие конструкции выполненные с помощью js, а не какого-то альтернативного синтаксиса это плохо и возврат в позапрошлый век?

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

А по-моему как раз таки наоброт, убрали лишнюю прослойку и стало только лучше.

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

То, что есть индивиды, которые сгребают всё в одну кучу — это только их проблема.

Да вот не надо этих сказок. Все сгребают все в одну кучу. Jsx так устроен, что по-другому нельзя.

anonymous
()
Ответ на: комментарий от x3al

Шаблоны на фронтэнде — прошлый век.

Ну так никто и не спорит. Только, еще раз, jsx - это _поза_прошлый век. Подход, от которого профессионалы уже давно, понабивав шышек, отказались в пользу более удобных подходов. Вобщем-то, нынешние фронт-энд-пыонеры так же шишек набьют и откажутся. Обидно только, что вместо jsx -> templates -> something-new мы получим jsx -> templates -> jsx -> templates -> something-new, потеря времени. Ну да ничего, не все происходит идеально.

anonymous
()
Ответ на: комментарий от anonymous

Ну так как говно выглядит. Потому что говно. Кто-то долго ел говно и привык к вкусу говна - так что ж?

Если для тебя это выглядит как говно, это ещё не значит, что оно на самом деле такое.

Они же не просто так появились. До них jsx-подобные подходы использовались не один десяток лет и были признаны кривым. Шаблоны пришли на замену jsx и оказались значительно более удобным решением, с меньшим количеством недостатков. Да, недостатки есть и у шаблонов - но _меньше_.

Примеры будут? Я вот «пыонер, пороху не нюхавший», кроме пыха ничего припомнить не могу. И какие конкретно недостаки, хотелось бы услышать.

Да вот не надо этих сказок. Все сгребают все в одну кучу. Jsx так устроен, что по-другому нельзя.

Ну вот пхпшники научились же не разводить кашу. Почему с JSX нельзя? Может у кого-то просто руки кривые?

Kilte ★★★★★
()
Ответ на: комментарий от Kilte

Если для тебя это выглядит как говно, это ещё не значит, что оно на самом деле такое.

Оно на самом деле такое. Люди долго ели и отказались от него. В пользу шаблонов.

Примеры будут?

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

Ну вот пхпшники научились же не разводить кашу.

Да. Фактически, полностью отказавшись от использования своего варианта jsx.

Может у кого-то просто руки кривые?

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

anonymous
()
Ответ на: комментарий от anonymous

на чем предпочитает пейсать сей важный господин?

anonymous
()
Ответ на: комментарий от Kilte

То, что люди долги годы использовали этот подход и отказались от него в пользу более современных - это не аргумент? Кому вообще в голову пришло использовать дсл для темплейтов (это ведь надо было отдельно реализовывать, и реализация не так уж тривиальна), если можно так хорошо и прекрасно пидорасить код напрямую из хост-языка? Об этом ты не задумывался? Или ты серьезно полагаешь, что пара пастухов из фейсбука, постоянно врущая своей необразованной пастве хипстеров, умнее нескольких поколений программистов, которые вообще создали индустрию как таковую?

anonymous
()
Ответ на: комментарий от anonymous

Я так и не увидел пояснений, чем JSX так сильно плох. По пунктам. «JSX — говно, потому что:». Одни лишь какие-то абстрактные «это позапрошлый век», «jsx говно», «темплейты рулят».

JSX рулит хотя бы потому что у тебя всё в одном месте. Не нужно бегать по файлам, копаться в куче селекторов и т.д. Это фронтенд, не бэкэнд. Здесь нужно только взять с сервера данные и отрендерить их. Какая тут к чёрту бизнес-логика? (Это к тому что мешать логику с представлением плохо). Здесь в основном только логика UI. Даже если и нужно что-то посчитать, никто не заставляет делать это в компоненте.

Kilte ★★★★★
()
Ответ на: комментарий от Kilte

«JSX — говно, потому что:». Одни лишь какие-то абстрактные «это позапрошлый век», «jsx говно», «темплейты рулят».

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

JSX рулит хотя бы потому что у тебя всё в одном месте.

Ну и сделай инлайн шаблон себе, в чем проблема?

anonymous
()
Ответ на: комментарий от Kilte

К слову на счет «в одном месте» - процесс построения любого достаточно большого шаблона с jsx _приходится_ разбивать на мелкие ф-и (иначе он становится совсем невнятным), так что в итоге все кусками невнятными разбросано.

anonymous
()
Ответ на: комментарий от Kilte

И не надо про «небэкенд». При переход к спа и вещам вроде graphQL/OData/etc у тебя логика как раз переходит на клиент, а сервер - просто тонкая прослойка между клиентом и данными, которая следит чтобы не отдавать ненужного и не сломать нужное.

anonymous
()
Ответ на: комментарий от anonymous

Подход, от которого профессионалы

Какие? Поимённо можно?

x3al ★★★★★
()
Ответ на: комментарий от anonymous

Потому что нормальный дсл

Во! Так бы сразу начал!

Теперь назови нормальный DSL. Нет, это не HTML потому, что фронтэнд-шаблоны НИКОГДА не бывают на html.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Теперь назови нормальный DSL.

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

anonymous
()
Ответ на: комментарий от anonymous

Ни одного из тех, что лучше, не видел. Ведь они даже не умеют в обработку событий лучше, чем «передать в js» (в тяжёлых случаях не умеют и в такую). Это значит, что шаблон — единое целое с этим js, обрабатывающим пользовательские события, и смысла писать его как фрагмент на другом языке тупо нет.

Тем более что нет НИ ОДНОГО шаблонизатора, нормально умеющего во вложенные компоненты с учётом передачи всех этих пользовательских событий. В ангулярах2 есть https://github.com/angular/angular/issues/11168 костыли вот таких размеров. В vue2 для такого пользовать разве что jsx (лол).

x3al ★★★★★
()
Ответ на: комментарий от x3al

Ведь они даже не умеют в обработку событий лучше

Штааа? Зачем тебе в шаблонизаторе обработка событий?

Тем более что нет НИ ОДНОГО шаблонизатора, нормально умеющего во вложенные компоненты с учётом передачи всех этих пользовательских событий. В ангулярах2 есть https://github.com/angular/angular/issues/11168 костыли вот таких размеров.

Все правильно. Плохие с архитектурной точки зрения практики надо делать как можно более неудобными в использовании. Чтобы их не применяли без крайней необходимости. А вот когда у тебя весь хост язык в доступе - тогда и начинается настоящий п*здец ведь говнокод становится писать весело и просто!

anonymous
()
Ответ на: комментарий от anonymous

Зачем тебе в шаблонизаторе обработка событий?

В компоненте нужна обработка событий. А шаблонизатор — просто (плохое) средство для описания разметки этого компонента.

Плохие с архитектурной точки зрения практики

О да. Сейчас ещё объявишь, что higher-order components ужасны потому, что без jsx невозможны.

x3al ★★★★★
()
Ответ на: комментарий от anonymous

В компоненте нужна обработка событий.

Ну так в компоненте и обрабатывай. Никто же не обрабатывает события в том же JSX? не обрабатывает. Вот и в шаблонах не надо.

anonymous
()
Ответ на: комментарий от x3al

О да. Сейчас ещё объявишь, что higher-order components ужасны потому, что без jsx невозможны

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

anonymous
()
Ответ на: комментарий от anonymous

То есть ты предлагаешь отказаться от всех тулзов, умеющих в js, заменить compiletime-ошибки на рантайм чтобы эндюзерам было веселее и существенно усложнить стэк только потому, что ваша команда неосилила объяснить джуниорам декомпозицию кода? Это ж не работает: они всё равно найдут, как превратить код в немейнтебельное спагетти.

x3al ★★★★★
()
Ответ на: комментарий от x3al

То есть ты предлагаешь отказаться от всех тулзов, умеющих в js

О чем ты?

заменить compiletime-ошибки на рантайм

Зачем?

и существенно усложнить стэк только потому

Зачем усложнять? Шаблонизаторы проще чем jsx.

Это ж не работает: они всё равно найдут, как превратить код в немейнтебельное спагетти.

Конечно. Но в таком случае спагетти будет, например, 10% кода, а не 90%, как это происходит в случае jsx.

anonymous
()
Ответ на: комментарий от anonymous

О чем ты?

Когда я делаю опечатку в JS, любой редактор (не говоря об IDE) видит это. Когда я прикручиваю типы — они поддерживаются буквально всем. Когда я хочу продебажить JS — опять же, у меня нет проблем. Шаблоны лишают всего этого.

Зачем?

Действительно, зачем? Но шаблоны так устроены.

Зачем усложнять? Шаблонизаторы проще чем jsx.

Нет, сложнее. И чем умнее он, тем хуже. То, что в ng2 — совсем песец.

Но в таком случае спагетти будет, например, 10% кода, а не 90%, как это происходит в случае jsx.

Ты хоть раз видел jsx-код не в исполнении джуниоров?

x3al ★★★★★
()
Ответ на: комментарий от x3al

Когда я делаю опечатку в JS, любой редактор (не говоря об IDE) видит это. Когда я прикручиваю типы — они поддерживаются буквально всем. Когда я хочу продебажить JS — опять же, у меня нет проблем. Шаблоны лишают всего этого.

Всеми теми же минусами обладает и jsx.

Но шаблоны так устроены.

Нет.

Нет, сложнее.

Нет, проще. Любой, даже самый навороченный язык шаблонов будет проще тьюринг-полного js'а. А простые и удобные шаблоны вроде ng2 - так и подавно.

То, что в ng2 — совсем песец.

Какой писец? Хороший, лаконичный и консистентный синтаксис, поддержка типов, проверки со стороны иде, высокий уровень гибкости. Что еще нужно? И никакого тебе нечитаемого лапшекода в стиле jsx - все красиво, просто и понятно.

Ты хоть раз видел jsx-код не в исполнении джуниоров?

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

anonymous
()
Ответ на: комментарий от anonymous

Всеми теми же минусами обладает и jsx.

Эмм. jsx — тонкий слой сахара поверх js, и его давно умеет вообще всё. И да, оно умеет типы.

Какой писец?

Ты знаешь, что чуть ли не половина ng2 — это парсер вот этих простых (и всё ещё убогих) шаблонов?

x3al ★★★★★
()
Ответ на: комментарий от x3al

Эмм. jsx — тонкий слой сахара поверх js, и его давно умеет вообще всё.

Еще раз - jsx де-факто является шаблонизатором, просто кривым и убогим, что некоторым образом пытаются компенсировать (неудачно) полным доступом к хост-языку. Так что если что-то умеет jsx, то оно точно также может уметь и любой другой шаблонизатор.

И да, оно умеет типы.

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

Ты знаешь, что чуть ли не половина ng2 — это парсер вот этих простых (и всё ещё убогих) шаблонов?

Я в курсе. Но парсер jsx _намного_ сложнее парсера ангуляровских шаблонов, так как он содержит парсер всего жса.

И на самом деле я, если честно, плевать хотел, насколько сложна их реализация. Пусть какая угодно будет - мне главное, чтобы инструмент был прост и удобен в работе. Шаблоны проще и удобнее. JSX - в 2000 году он, может, и был неплох, но мы живем в 2017. Пора использовать более современные средства разработки, а не те, что устарели два десятилетия назад.

anonymous
()
Ответ на: комментарий от anonymous

jsx де-факто является шаблонизатором

Зачем я спорю с тем, кто не отличает сахар от другого языка? Так каждый плагин для babel скоро шаблонизатором назовут.

Но парсер jsx _намного_ сложнее парсера ангуляровских шаблонов, так как он содержит парсер всего жса.

Эмм. Что? Парсер жса уже давно написан (нода, либо встроен в каждый браузер), и для того, чтобы развернуть jsx в js, ничего больше не нужно.

Ещё можно упомянуть hyperscript-подобные вещи, но зачем?

x3al ★★★★★
()
Ответ на: комментарий от x3al

Зачем я спорю с тем, кто не отличает сахар от другого языка?

Тогда и ангуляровские шаблоны - сахар для html, так ведь? Ведь они отличаются от html намного меньше, чем jsx отличается от js.

Эмм. Что? Парсер жса уже давно написан

Парсер ангуляровских шаблонов тоже, что дальше? О чем ты речь ведешь и что пытаешься доказать? Какая разница, написан парсер жса или нет? Какая разница, сложный он или нет? Какая разница, шаблон это или тот же язык? Есть инструмент, и он либо хорошо справляется с поставленными задачами (как полноценные шаблонизаторы), либо плохо (как jsx).

anonymous
()
Ответ на: комментарий от anonymous

Ведь они отличаются от html намного меньше

Эмм. HTML не тьюринг-полный.

либо хорошо справляется с поставленными задачами (как полноценные шаблонизаторы), либо плохо (как jsx).

Вбрось пример, что ли.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Эмм. HTML не тьюринг-полный.

Шаблоны тоже, лол.

Вбрось пример, что ли.

Берешь _любой_ достаточно большой отрытый проект на реакте. Видишь кучу говна из jsx, тернарных операторов, микрофункций и прочей поебени, которая делает код принципиально нечитаемым, вместо верстки. Исключений нет, ergo на jsx нельзя написать неговно. На ангуляре - можно.

anonymous
()
Ответ на: комментарий от anonymous

Ну ок. Просто в местном тырпрайз-хипстерском проекте вижу оба (а заодно и легаси на jquery, backbone, marionette и прочей фигне) и могу сравнивать.

x3al ★★★★★
()
Ответ на: комментарий от x3al

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.