Reactの基本1(開発環境~コンポーネントの作成とWebサーバへのデプロイ)

目次

1.Reactとは
(1)概要
 React(React.js)は、Facebookとコミュニティで開発されているユーザインタフェース構築のためのJavaScriptライブラリ。
(2)特徴
・JavaScript内に HTML の様な独自の記法(JSX)を使うことでプログラムが読みやすくなる。
・仮想 DOMにより差分のみの画面描画ができる。
・フロントの描画に使う見た目や機能をクラス及び関数コンポーネントで作り(export)、javascriptで読み込む(import)することでプログラムの保守がし易くなる。

2.HTMLページで部分的にReactの利用
 ここでは、Reactのライブラリを読み込み、ReactのReact.createElement()メソッドによるReact要素作成、ReactDOM.render()メソッドによるReact 要素とブラウザ上のDOMを接続してレンダリングする。
 React.createElement(HTML要素名, プロパティ, 子要素)の様式でReact要素を作成する。

(1)React.createElement()によるReact要素の作成
test1.html

・最初の2つの<script>タグはReactを読み込むもので、3つ目の<script>タグはコンポーネントのコードを読み込むもの。
js/test1.js

・React.createElement()でReact要素を作成。
・ReactDOM.render()でReact要素をDOM ノードにレンダーする。

XAMPのApatchを起動し、httpd.confに記述している通りtest1.html、test1.jsファイルを”C:/xampp/htdocs”のフォルダに配置する。
httpd.conf

ブラウザでtest.htmlファイルを開く

id=”root”の要素にReactで作った要素が入る

(2)JSXによるReact要素の作成
下記のルールで記述されたJSXによるスクリプト文はBabelによってJavaScript のReact要素に変換される。
・通常のHTMLタグは小文字で、ユーザー定義のReactコンポーネントは大文字始まりで書く。
・JSX 内で式として評価する箇所は { と } で囲む。
・JSX ではキャメルケースで記述する。キャメルケースでは helloWorld のように、先頭は小文字、単語の区切りで大文字とする)。
・JSX では全体をまとめる要素が必要で、全体を囲み、一つの要素にするという目的のために<React.Fragment> と </React.Fragment> で囲む。React.Fragment のタグは <>と</>という短縮形で書くこともできる。
test4.html

js/test4.js

3.Reactの開発環境
(1)ホストOS
・Windows 10 Pro
(2)仮想環境(VirtualBox)
 ・ゲストOS:CentOs8(Red Hat 64-bit)
(3)reactのインストール
 $ npm install -g create-react-app
(4)プロジェクトの作成
 $ create-react-app reactsample
 上記のコマンドを使うことで、package.jsonの作成、トランスコンパイラのBabel、バンドラーのWebpackの設定ができる。
 本コマンドを使うためにNodeバージョン:10.16以上、及び npmバージョン:5.6以上の環境が必要。
https://ja.reactjs.org/docs/create-a-new-react-app.html

(補足)

・トランスパイラ:
 Babelは、ECMAScript15以降のモダンなJavaScriptの構文や機能を活用して書かれたコードをそれ以前の古いJavaScriptコードに変換してくれるJavaScriptコンパイラやトランスパイラと呼ばれるツール。
 ECMAScript(エクマスクリプト)は、Ecma Internationalのもとで標準化手続きが行われているJavaScriptの規格。
・バンドラー
 リソース(HTML、JSX、CSS、JavaScript、PNGなどのファイル)を1つに束ねるツール。WebpackはNode.jsの環境とNode.jsのパッケージを管理するnpm(Node Package Manager)が必要。

「create-react-app」コマンドで下記のフォルダが作られる。
・フォルダ構成

(5)Reactサンプル画面の表示
「create-react-app」コマンドで作成されたフォルダで「npm start」コマンドを実行する。
 $ cd reactsample
 $ npm start

・仮想マシンのブラウザで下記urlに接続
http://127.0.0.1:3000

4.React のコンポーネント作成
 コンポーネントは UI の一部分となるビュー (View) を作る働きをするプログラムであり、再利用できる。
 コンポーネントはReact.Component から派生したクラスとして作成し、renderメソッドでビューとなる JSX を返す。
 「create-react-app」コマンドでReactの環境を作成した場合はエントリポイントはindex.html、index.jsに設定され、index.jsで使うコンポーネントを作成する。
(1)コンポーネントの作成
public/index.html

src/index.js

(解説)
・Create React App を含む JavaScript のバンドルツールを使った環境で React や ReactDOM のメソッドなどを使う場合、React 本体や ReactDOM を import 文を使って読み込む必要がある。
 import 名前(変数名) from ‘モジュールのパス’;
 import React, { Component } from ‘react’;
 但し、webpack を使用している場合、npm でインストールしたモジュールは webpack のモジュール解決の仕組みがあるので通常のローカルファイルとは異なりパスや拡張子を省略することができる。そのため import React from ‘react’ のようにパスや拡張子を省略して記述できる。
・ReactのレンダリングはReactDOM.render() メソッドを使う。
 ReactDOM.render(element, container[, callback])
  element:React 要素やコンポーネント
  container:描画先となる実際の DOM ノード(コンテナ)
  callback:オプションのコールバック関数
・StrictMode はアプリの潜在的な問題を検出するために追加されたコンポーネントで<StrictMode>・・・</StrictMode>で囲まれた子孫コンポーネントに対し、安全でないライフサイクルメソッドの使用などのチェックを行う。
・Create React App を使った環境ではエントリポイントの index.jsでコンポーネントなどを読み込んでレンダリングすることでアプリケーションを表示する。

src/Test5.js

・JSXの記述で子要素にjavascript関数を使うときは関数名を{}で囲む。

(2)開発用サーバで実行
開発用サーバを起動し、仮想マシンのブラウザで下記urlに接続
$ npm start
http://127.0.0.1:3000

5.Webサーバにデプロイ
(1)ビルド
 $ npm run build

・buildフォルダが作成される。
build
|-index.html
|-static
|-js

(2)Webサーバにデプロイ
 XAMPのApatchを起動し、httpd.confに記述している通りindex.htmlファイルとstaticフォルダを”C:/xampp/htdocs”のフォルダに配置する。

The end