タイトルのような相談を受けましたので、回答していきたいと思います。
結論はモダンJavaScriptベースでかっちり書きたいならReact、HTMLベースで規約をゆるく書きたいならVue.jsです!
そもそも初心者はどっちでも良い
プログラミング自体が初心者の方は、
フィーリングで好きな方を選んでもらって大丈夫です!
なぜなら、プログラミングの本質的な部分はどの言語でも学べるので、まずは挫折しないように「好きな方、気に入った方」を進めるのが良いからですね!
ReactとVue.jsを比較
案件の量と単価
どちらも大差なしなので、好きな方を選んでくださいー
2020年12月15日現在の案件数は1505件でした。
2020年12月15日現在の案件数は1115件でした。
2020年12月現在の話なので、これ以降に見た人はこちらから調べ直して見てください!
なぜなら、プログラミング言語やフレームワークの人気は常に変動しています。
そのため、古い情報のまま進めると仕事がない!といった状況になってしまう可能性があるんですよね!
技術的な違い
モダンJavaScriptベースのコードかHTMLベースのコードの違いなので、ここは好みで決めてOKです!
ReactがほとんどHTMLタグが見られないのに対して、Vue.jsはほとんどがHTMLタグで、属性値を書くゾーンにループ処理などの指示が書いてあります!
一つ僕がVue.jsで気になる点としては、テンプレートにVueのものやReact風のものも使えたりと節操がなく、コーディング規約をきっちり決めないと、収集がつかなくなる点が気になりました・・・
1人で開発する場合はいいですが、複数人で開発を行う場合ってやっぱり個人個人で書き方のクセなんかもあります。
その結果、コードに統一性がなくなったりとVueは後々破綻しそうでちょっと怖いと感じてしまいます。
エンジニアとしての成長
これはわずかにReactに軍配が上がるかなと。
なぜならVueは何でもかんでも書けてしまうので、統一性がなくても問題ありません。
しかし、Reactはある程度決まった書き方をしないとコンパイルエラーになってしまうので、きっちり書けるエンジニアになると強いですね!
Reactの懸念点
今までの記述で、「Reactの方がいい!」と思った方も多いでしょう。
しかし、Reactには弱点はあって、厳格がゆえ開発スピードが落ちたり、初心者であれば挫折してしまう確率が上がってしまいます。
僕はプログラミング歴6年ですが、やはりReactは難しいです💦
開発チームの方向性
ここからは少しおまけで、もう少し突っ込んだ情報を書いていきます!
フロントエンドの言語・フレームワークだけではなく、サーバーサイド言語にも厳格な物やゆるいものもあります。
一般的に堅いものは静的型付け言語と呼ばれていて、実行前に変数の型のチェックなどが入るので、ルール通りに書かないとそもそもプログラムを実行できないんですよね。
言語で言うと、GoやJavaが静的型付け言語に当たります。
その逆をスクリプト言語と呼ばれ、いきなり実行できるPHPやRubyなどですね。
これは事前チェックがないので、不具合が出る可能性も高いですが、厳格な決まりが少ないので、開発スピードがアップするメリットがあります。
サーバーサイド言語との相性について
これも質問されたので、回答しますと、相性は関係ないです!
なぜなら、こういったシングルページアプリケーション(SPA)向けの技術はフロントエンド・サーバーサイドのデータのやりとりはJSONで行うからです。
{
"id": "1",
"name": "uchida yuma",
"like": "frog:,
"address": "tokyo"
}
なぜLaravelはデフォルトにVueを選択したか
これも聞かれまして、僕は最初↑で示したマトリックス図のゆるい同士でスピードを重視するスタートアップに使って欲しいのかと思っていました。
日本語で調べても出てこなかったので、英語ベースで調べると出てきましたよ!
なんとLaravel開発者の趣味だったようですw
Laravel開発者のTylorはAngular.jsを使っていました。しかし、Anguralrの人気は低いので、ReactかVueを使う必要がありました。
VueはReactよりAngularに近かったので、LaravelのデフォルトにはVueが採用されています。
https://www.quora.com/Why-does-Laravel-choose-Vue-js-over-React-js-as-their-standard-front-end-JS-framework
エンジニアの資質の1つは英語で調べられるか
このようにプログラミングやインフラにおいては日本語で出てこない情報が多々あります。
そのため、困った時に自力で解決できる力は本当に大切なので、プログラミング言語を学びながらこう言った本質的な部分も鍛えてもらえると大変良いですね!