Выбор фреймворка для нового проекта — Angular? React? Vue?

Скоро начинаю новый проект и встал вопрос о выборе фреймворка для фронт-енда.
Исходные данные:
- Тип проекта: аггрегатор с большим количеством таблиц и большим количеством данных которые ходят на сервер и обратно.
- Уровень знаний команды. Angular 1 - 6 из 10. Angular 2 - 2 из 10, React 0 из 10, Vue - 0 из 10.
- Что нравится: декларативная разметка, шаблоны, виртуальный DOM
- Что не нравится вотчеры и дайджесты как это сделано в Angular 1.
Что посоветуете выбрать исходя из этих данных? P.S. Время на изучение новых технологий есть. Можно ли делать большой энтепрайз на Vue? Он судя по бенчмаркам быстрее реакта.
P.P.S. Читаю документацию по Vue. Можно ли сказать, что это некая смесь Ангуляра и Реакта?
  • Вопрос задан
  • 3206 просмотров
Решения вопроса 1
  • dom1n1k
    @dom1n1k
    Лично для меня Vue - это такой "фреймворк с человеческим лицом".
    В целом JS-мир похож на поле боевых действий, где постоянно то налеты авиации, то кононада гремит, то хипстерская конница с новым логотипом на знамёнах проскачет.
    А "обычный" человек сидит в подвале, обхватив голову руками, и думает - мама дорогая, куда я попал, и чё ваще вокруг происходит?
    Какие-то новые паттерны, подходы, языки... Раньше, чтобы начать, достаточно было блокнота и браузера. Пишешь hello world и сразу его видишь. Теперь нужно поставить ноду, овер 9000 пакетов, десять транспиляторов, таск-менеджеров и бандлеров. Пока увидишь рабочий результат - поседеешь.
    И вдруг какая-то добрая душа взяла у хипстоты всё самое лучшее и разумное, что та родила, но очистив от лишних абстракций и усложнений - и выкатила велосипед в виде велосипеда, а не турбо-космолета с инструкцией толщиной как "Капитал". И снова можно писать в блокноте и смотреть в браузере. При этом почти не проигрывая в возможностях.
    Ответ написан
Пригласить эксперта
Ответы на вопрос 11
  • sim3x
    @sim3x
    Как задавать вопросы http://goo.gl/spqRI2
    Рационально выбирать фрейворк в зависимости от того
    - насколько он молод и имеет ли проблемы в архитектуре
    - кто поддерживает и какой состав коммюнити
    - как много пакетов к нему есть
    - насколько распространены разработчики
    - насколько быстро там пишутся тесты и код

    Не составит труда подставить все три фрейворка в график
    2e3deb5b81554ba2ab2a255712a2b5eb.png
    https://g.co/trends/ZZMFy

    В коментах предложили угадайку посложнее
    144f7a96b8a8408b8da602b4d54c780a.png
    Ответ написан
  • Rastishka
    @Rastishka
    Я тоже за Vue. Сделал на нем 2 CRMки, особых проблем не было.

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

    А еще у него звездочек на гитхабе в 2 раза больше чем у ангуляра.
    Ответ написан
  • @imikh
    Ищем web/py/java/mobile разработчиков на удалёнку
    Женись, ты об этом пожалеешь; не женись, ты и об этом пожалеешь
    Ответ написан
  • @LiguidCool
    Надо писать на том, что знаешь. Возможно вам имеет смысл апнуть версию Ангуляра.
    Я бы писал на React, не нравится мне идея добавки левых атрибутов в html...
    Ответ написан
  • astec
    @astec
    Разработчик https://debtstracker.io/
    Фрэймворк всё таки не живёт сам по себе. Помимо того что у каждого из фрэймворков своя идеология которая может быть близка или не очень могуть быть ещё и решения базирующиеся на фрэймворке которые предопределяют выбор.

    Например когда я выбирал между React и Angular(2) для https://debtstracker.io/ я остановился на Angular2 из за ionicframework.com (второй версии) потому что для меня было критичным иметь поддержку кросс-платформенных приложений и PWA из коробки. Пока всё нравится.
    Ответ написан
  • @teke_teke
    фрилансер | alexmaslakov.me | me@alexmaslakov.me
    пока выберете, он уже устареет. надо уже выбирать что-то другое более новое.
    Ответ написан
  • @bbeight
    Заметил на codepen всё больше быдлокодеров переходят с jq на vue :) значит легко заходит, попробуйте его :) а вообще react как-то надежнее, все таки проверен временем :)
    Ответ написан
  • @xom9lk
    У вас большая команда. Выбрать стоит тот инструмент, который дает все необходимое для работы, т.е. Angular2, или Ember.
    Angular2 сейчас предполагает тотальное использование RxJS и это хорошо. Rx пользуется популярностью у разработчиков мобильных приложений и вы можете переиспользовать практики.

    По поводу Vue и React, да, они похожи если к React добавить MobX и перестать использовать this.state, и да, Vue - это View из Angular + computed;
    Проблемы использования Vue и React в командах очевидны: один хочет использовать такое хранилище/роутер/библиотеку, другой - другое, через неделю - третье. Нет нормальных CLI инструментов. Этот мир изменчив и нестабилен, хотя, в последнее время устаканивается.
    Вот простейшие компоненты на React и Vue:

    Vue (typescript):
    import * as Vue from 'vue';
    import Component from 'vue-class-component';
    
    @Component({
      template: '<div><div>{{message}}</div><button @click="onClick">Click!</button></div>'
    })
    export class MyComponent extends Vue {
      static message: string = 'Hello!';
      protected showMessage: boolean = false;
    
      onClick (): void {
          this.showMessage = !this.showMessage;
      }
      
      get message(): string {
          return this.showMessage ? MyComponent.message : '';
      }
    }


    React + MobX (typescript):
    import * as React from "react";
    import {observable, action, computed} from "mobx";
    import {observer} from "mobx-react";
    
    @observer
    export class MyComponent extends React.Component<{}, {}> {
        static message: string = 'Hello!';
    
        @observable
        protected showMessage: boolean = false;
    
        @action
        onClick = (): void => {
            this.showMessage = !this.showMessage;
        };
    
        @computed
        get message(): string {
            return this.showMessage ? MyComponent.message : '';
        };
    
        render() {
            return (
                <div>
                    <div>{this.message}</div>
                    <button onClick={this.onClick}>Click!</button>
                </div>
            );
        }
    }


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

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы