Задать вопрос

Выбор фреймворка для нового проекта — 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. Можно ли сказать, что это некая смесь Ангуляра и Реакта?
  • Вопрос задан
  • 6962 просмотра
Подписаться 30 Оценить 1 комментарий
Решения вопроса 1
dom1n1k
@dom1n1k
Лично для меня Vue - это такой "фреймворк с человеческим лицом".
В целом JS-мир похож на поле боевых действий, где постоянно то налеты авиации, то кононада гремит, то хипстерская конница с новым логотипом на знамёнах проскачет.
А "обычный" человек сидит в подвале, обхватив голову руками, и думает - мама дорогая, куда я попал, и чё ваще вокруг происходит?
Какие-то новые паттерны, подходы, языки... Раньше, чтобы начать, достаточно было блокнота и браузера. Пишешь hello world и сразу его видишь. Теперь нужно поставить ноду, овер 9000 пакетов, десять транспиляторов, таск-менеджеров и бандлеров. Пока увидишь рабочий результат - поседеешь.
И вдруг какая-то добрая душа взяла у хипстоты всё самое лучшее и разумное, что та родила, но очистив от лишних абстракций и усложнений - и выкатила велосипед в виде велосипеда, а не турбо-космолета с инструкцией толщиной как "Капитал". И снова можно писать в блокноте и смотреть в браузере. При этом почти не проигрывая в возможностях.
Ответ написан
Пригласить эксперта
Ответы на вопрос 11
@beduin01
Vue и только он. Сам перешел на него с Ангулара.
Ответ написан
Mamboking
@Mamboking Автор вопроса
Наверное самый мощный аргумент - GitLab использует vue.js - https://about.gitlab.com/2016/10/20/why-we-chose-vue/
Ответ написан
sim3x
@sim3x
Рационально выбирать фрейворк в зависимости от того
- насколько он молод и имеет ли проблемы в архитектуре
- кто поддерживает и какой состав коммюнити
- как много пакетов к нему есть
- насколько распространены разработчики
- насколько быстро там пишутся тесты и код

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

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

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

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

Например когда я выбирал между React и Angular(2) для https://debtstracker.io/ я остановился на Angular2 из за ionicframework.com (второй версии) потому что для меня было критичным иметь поддержку кросс-платформенных приложений и PWA из коробки. Пока всё нравится.
Ответ написан
@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>
        );
    }
}


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

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

Похожие вопросы