LINUX.ORG.RU

React vs Vue vs Svelte vs somebuzzword: что лучше?

 , svelte,


0

2

React/pReact

App.jsx:

import { h, Component } from 'preact'

export default class App extends Component {
  state = {
    counter: 0,
  }
  increaseCounter = (e) => {
    this.setState((state) => ({
      counter: ++state.counter
    }))
  }
  render(_, { counter }) {
    return (
      <button onClick={this.increaseCounter}>
        Count: {counter}
      </button>
    )
  }
}

index.js:

import { h, render } from 'preact'
import App from './App'


render(<App />, document.querySelector('#app'))

Vue

App.vue:

<template lang="pug">
button(@click="++counter") Count: {{ counter }}
</template>

<script>
export default {
  data: () => ({
    counter: 0,
  }),
}
</script>

index.js:

import Vue from 'vue'
import App from './App.vue'

new Vue({
  el: '#app',
  render: h => h(App)
})

Svelte

App.svelte:

<script>
let counter = 0
</script>

<button on:click={() => ++counter}>Count: {counter}</button>

index.js:

import App from './App.svelte'

export default new App({
  target: document.body,
})

Прочее

index.html примерно общий для всех:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta charset="utf-8" />
    <title></title>
    <meta name="author" content="" />
    <meta name="keywords" content="" />
    <meta name="description" content="" />
  </head>
  <body>
    <div id="app"></div>
    <script src="./index.js"></script>
  </body>
</html>

Запускал все через parcel.

Можно ли сделать на основании этих примеров вывод о громоздкости реакта? Или вы можете привести примеры, где React менее многословен (это у меня еще без TypeScript). Сейчас примерно половина вакансий с React. Мне нужно определиться нужно ли вдовесок выучить эту парашу (хотя там учить особо нечего, но меня тошнит от смешения разметки и js)

★★

Последнее исправление: tz4678 (всего исправлений: 2)

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

https://t.me/tsar_blog - действительно, опять темы потёрли не гуглится телега.

По этому вопрос, кто ты?

маня-известный тутошний адепт сишки, крестов, хейтер скриптух и прочих растов.

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

во-первых я тебе не братан. если для тебя типичный стек vue/vuex/vue-router/pug/scss/vuetify - это сложные вещи, то и сиди дальше на своем jquery. я его всегда, кстати, ненавидел, но он все же повлиял на javascript (querySelector, метод remove у HTMLElement и т.д.), мне, интересно, запилят когда-нить в браузере нативный two way data binding, идея компонентов то прижилась и запилили webcomponents

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

я знаю почему у тсарей бомбит, потому как за скриптоту больше платят. его аргументауия меня не убедила, а чтобы у тебя строки вместо чисел попадали… ну, епта, даже в браузере отладчик есть не говоря уже о «блокноте» типа vscode. как? мало опыта? почему у меня проблем нет таких?

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

во-первых я тебе не братан.

А кто?

Сеструха я.

Владимир

anonymous
()

jsx — мерзость, мне думается, что фанаты больны.

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

Я завёл блог-телегу

Подумаешь, я завел себе нового парня и так сильно его завел ;) Ну ты меня понял!

Шаман

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

если для тебя типичный стек vue/vuex/vue-router/pug/scss/vuetify - это сложные вещи

Ну к чему это, не ты ли выше говорил что типичные задачи на js это форму отправлять?

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

Подумаешь, я завел себе нового парня и так сильно его завел ;) Ну ты меня понял!

А вот это уже unsafe

Разорванный Флакон

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

кто не рискует тот не пьет шампанского ;)

Сильно не тряси, и смотри, чтобы пробка в глаз не ударила

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

Сильно не тряси, и смотри, чтобы пробка в глаз не ударила

Я больше пиво чешское люблю. От шампанского меня пучит. Шампань мой Кшиштаф любит.

Шаман

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

Фу, гомофоб :( Поэтому я и уехал в европу.

Фу, гомофобофоб :( Поэтому я и остался в россии.

Машань

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

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

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

запилят когда-нить в браузере нативный two way data binding, идея компонентов то прижилась и запилили webcomponents

Толку-то, если все равно годами придется поддерживать какое-нибудь овно мамонта, которое все это не умеет и уметь никогда не будет.

Nervous ★★★★★
()

Svelte… На размер поглядите

dem ★★
()

Про выучить. Я для себя сделал такой вывод. Когда куча вакансий было по FoxPro он уже умирал. Когда по Delphi он умирал. Это просто инерция…

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

Сейчас то же самое React, но Vue 3, который скоро выйдет будет кардинально отличаться от 2-го (текущего). Я три года назад сделал выбор в пользу Vue, тогда на нем в Питере было пару вакансий. React - это маркер легаси. На нем все проекты начинали три года назад, наевшись ангуляра

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

React - это маркер легаси.

Это такие беспочвенные фразы, особенно от человека для которого js это работа со строками

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

Я три года назад сделал выбор в пользу Vue

Специализация — удел насекомых (тм).

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

С ангуляра на реакт, с реакта на вью, а там, глядишь, новый ангуляр выйдет. И понеслась по новой %)

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 2)
Ответ на: комментарий от Nervous

На самом деле: тсарь прав, что типичное приложение на React - это кал без архитектуры, тупо портянка. Сама его концепция мертворожденная. Любители похапе из Пейсбук решили сделать какой-то PHP в браузере аля include header/include footer. Вакансий с ним нужно избегать, чтобы не сидеть, ковырять высер очередного 23-летнего синьора.

tz4678 ★★
() автор топика
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: комментарий от tz4678

тсарь прав, что типичное приложение на React - это кал без архитектуры, тупо портянка

Наверное, прав. Но ведь виноват-то в этом вовсе не реакт же %)

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

Сама его концепция мертворожденная

Концепция как раз здравая — вью как чистая функция от состояния. Никаких ручных ковыряний во вьюхах, меняешь состояние — вьюха меняется автоматически.

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

В общем, Главная Проблема Фронтенда в России.мп3 %)

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от anonymous

Машань

Синенькая юбочка, ленточка в косееее. Я Шаман-проказник, я не такой как всееее.

Шаман

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

Ты с DOM не работал, поэтому херню пишешь.

Ты меня с кем то перепутал, я никогда ничего не говорил про свою работу, или не работу с ДОМ

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

нет, это не новая концепция, она сущесивует с 2010-го или раньше. я не помню когда angular появился

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

а чем ты фронт предлагаешь тестировать? большинство программистов не пишут тесты, а на покрытие тестами онанируют только джавобои

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

нет, это не новая концепция

Я и не говорил, что она новая. Я говорил, что она здравая.

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

чем ты фронт предлагаешь тестировать?

Это зависит.

большинство программистов не пишут тесты

Потому что тестировать DOM — это боль. Танцы с браузерами, тормоза и безысходность.

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

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

я думал selenium вспомнишь или может прл cypress слышал

tz4678 ★★
() автор топика

чистый рект не комильфо. Юзай next-js ставится в одну строку: yarn create next-app

И будет у тебя хорошее SEO для сайта ибо next-js это по сути реакт с серверным рендерингом. И будет хорошо

romanlinux ★★★
()
Последнее исправление: romanlinux (всего исправлений: 2)
Ответ на: комментарий от Nervous

Концепция как раз здравая — вью как чистая функция от состояния.

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

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

Никаких ручных ковыряний во вьюхах, меняешь состояние — вьюха меняется автоматически.

А тут ты феерически обделался. Это полностью противоречит базовой концепции в которой вообще не существует реакции на изменение состояния.

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

Далее, эта полностью несостоятельная концепция столкнулась с реальностью. И пошли попытки прикрутить к ней костыли. vdom и прочее говно.

Далее оказалось, что vdom нихрена не работает. Было прикручены всякие механизмы отсечения веток на базе детекторов изменений. Сюда же пришлось прикручивать чистоту, потому как иначе всё в говне.

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

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

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

Ну и всё, концепция обделалась. Стали прикручивать хаки, что-бы обновлялись отдельные поддеревья независимо. Всё, чистота обосралась.

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

И теперь это внешнее состояние внедряется поверх нод в дереве, через хак триггеря у конкретных нод репейнт.

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

Но всё больше и больше хомячьё видело иных решений и осознавало то, что жрёт то оно дерьмо.

А там ещё и тормоза подъехали. У компонентов-функций нету хака для репейнта - его репейнтить может только предок, но доступа к нему нет. И вроде как мы упросили и оптимизировали, но нихрена - каждая эта херня оборачивалась обычным жирным компонентом.

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

Хотя хранит состояние и чистый - это уже оксюморон, но когда сектантов это останавливало.

Поэтому всё, концепция реакта, чистота и прочая чушь - развалились. От неё ничего не осталось.

Остался только привычный api. И какие-то огрызки базовой семантики.

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

с серверным рендерингом

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

И будет хорошо

И будешь жрать говно - ты хотел сказать?

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

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

tz4678 ★★
() автор топика
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: комментарий от tz4678

google, кстати, давно и так индексирует javascript-поиложения

Ты некомпетентный. В реальной (ПРОЧТИ СЛОВО СЛЕВА!) это не работает. И ты знал бы, если бы реально в этом разбирался.

Скажи пожалуйста, ты работаешь фронтенд разработчиком? Потому что если нет - то это просто феерическое ЧСВ (Я НЕ РАБОТАЮ В ДАННОЙ ОБЛАСТИ, НО ЗНАЮ ЛУЧШЕ ДРУГИХ КАК ПРАВИЛЬНО). А если же работаешь, можешь указать свою ЗП, чтоб понимали какой у тебя уровень?

abs ★★★
()
Последнее исправление: abs (всего исправлений: 1)
Ответ на: комментарий от tz4678

Да да… Это простое правило. Золото находишь не там где его уже нашли другие

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

приложи к попке что-нибудь

Мальчики, не ругайтесь :(

ваш Шаман

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

Гугол прекрасно все индексирует, если код транспилировать в es2015. Если API отдает ответ медленно, то не проиндексирует динамический контент. И дураку ясно, что SSR решает проблему, но мое утверждение все равно верное. Я веб-разработкой занимаюсь с 2009 года, начинал с PHP/MySQL, кончил тем, что начал писать на Python 3 и Vue.js. Мне платили мало 110-120 тысяч в месяц. Я уволился, решил се отпуск устроить, потому как мне надоели эти бесконечные спринты, митинги и стендапы, тупые менегеры. Прошел пару собседований и понял, что везде неадекваты. Я вообще не понимпю зачем нужно знать алгоритмы и чем отличается симметричное шифрование от ассиметричного для простого формошлепства, коим является веб-программирование.

tz4678 ★★
() автор топика
Последнее исправление: tz4678 (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.