8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

React のエコシステムに乗っかって、普通のランディングページを作りたい

Last updated at Posted at 2018-02-27

React のエコシステムはどんどん大きくなっていて、ありとあらゆるツールが React を中心に構築されている気さえする。とはいえ、そのツールの設定は前提知識が必要で、例えば Webapck や各種 Lint ツールをうまく使うためには、少し経験が必要だし、細々したツールの組み合わせでできている React の開発環境は、一見するとオーバースペックのようにも感じる。

それでも、フロントエンドを推し進めているのが JavaScript で、そのエコシステムを支えているのが Node.js で、一番 yarn add されているライブラリが React.js だとしたら、ブラウザのこちら側で汗をかく自分にとって、一番うまくフィットするはずだ。もっと React を使っていたい。

けど、React 全てのウェブ制作にとって最適だとは言えない。React は一般的にいって SPA = シングルページアプリケーションと呼ばれるタイプのアプリケーションを作ることに最適化されている。つまり、ページをリロードしたり遷移させたりせずに、データを Ajax 通信によって取得して、そのデータをもとにブラウザの中で JavaScript によってレンダリングする。

一番よく知られた SPA はおそらく Google Map だ。昔の地図アプリケーションは、見たい場所を移動させるたびに、リロードをしていたけれど、今はそうじゃない。環七通りをもっと先に進んで、そうだ、ここを曲がったところに住んでいたんだ。あの公園を見たい。地図の端の、さらに奥の、記憶の片隅にあるあの場所を見たい。そんなときも SPA のおかげで、ページは遷移しなくなった。とにかくそういうことに最近はなっている。それが SPA だ。

const mySweetMemory = ({name}) => <h2>someone call my {name} as...</h2>

でも、全てのエンジニアが Google Map を作っているわけじゃない。ぼくもそうだ。 "普通のサイト"、 つまり会社概要がまず表示されて、サイトマップリンクがあって、問い合わせ先があって、製品写真がスライドで動いている。HTML と CSS と、少しの JavaScript が必要だ。ほんとに少しの JavaScript でいい。

それなのに、こういう仕事の時に React を使うという選択肢は、ちょっと考えられないだろうと思う。どうしたんだって言われるかもしれない。HTML と CSS だけで、ブラウザが特権的に処理してくれる HTML と CSS だけで、仕事が終わるっていうのに、なぜ JavaScript をふんだんに書かないといけないんだ。JavaScript で動的に変更する要素なんてないのに。カルーセルや、ナビゲーションメニューは、jQuery のプラグインで綺麗にやれる。

ごもっとも。

それで "普通" の開発環境を作ることにした。

yarn init -y

Sass は、きっとみんなも使いたいだろう。

yarn add node-sass -D

ES2015+ で書けるようにしたっていいはずだ。ES5 をのけ者にするわけじゃない。
一緒にやれる。

yarn add babelif...

でも…待てよ。

モジュールは Browserify でまとめたほうがいいのか、それとも Webpack のほうがいいのか。Webpack の方がトータルのパフォーマンスはよくなるかもしれない。でも設定で苦労するかもしれない。Webpack は、みんながみんな使い慣れているとはまだ言えない。設定を楽にするなら、Parcel もいいとは聞いたぞ。

ここは一旦保留しよう…

テンプレートエンジンは必要だろう。ヘッダーやグローバルナビゲーションなど、共通パーツをまとめるには、テンプレートエンジンが必要だ。React ならここはコンポーネントを読み込むだけでいいけれど、テンプレートエンジンを使うなら、その設定も必要だ。Gulp を入れよう。

yarn add gulp or...

でも待てよ、Webpack を使うとしたら、そっちにやらせた方がいいのか?いや、開発サーバーは browser-sync の方を使うことにして、 Gulp で処理した方がシンプルだ。きっとそうだ。Webpac はバンドルに専念した方がいい。

けれどこのサンプルは全部 Webpack がやっているのか。ローダーも必要?...


どこまでがみんなが使える技術で、どこからがやりすぎなのかは判断するのが難しい。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?