<day1>Webアプリ完成するまで続ける開発日誌
こんにちは!
とあるハッカソン的なイベントでITサービスを作っています。
対象レベル(自己紹介)
ProgateのHTML、CSS、Javascriptあたり2周とかしたことある
授業でC言語、自分でPythonなど
やったこと
Reactの勉強からはじめます。
この記事、とっても丁寧に書いてくださっています。
https://qiita.com/TsutomuNakamura/items/72d8cf9f07a5a30be048
これを勉強していてエラーの対策などを書いたのが僕の記事です
前準備
だいたいエラーで苦労するのって前準備の環境構築のところですね。
まずはエラーコードをそのままググってみる癖をつけようって誰かが言ってました。
ワークスペースを作りましょう。
Macの方はターミナル.app
を起動し以下をひとつひとつ入力してください。
$ mkdir react-tutorial
$ cd react-tutorial
$ mkdir -p src/js
mkdir
は「make directory」の命令で、これを実行するとreact-tutorialという名前のファイルが作成されます。Finderでみてみてもちゃんとファイルが作られているのが分かります。
cd
は「change directory」の命令で、これを実行するとカレントディレクトリ(ファイル構造の中の自分の現在地)を移動することができます。
mkdir
のあとについている-p
は、階層構造を1度に複数まで作ることができるオプションです。
$ npm init
このコマンドを実行するといろいろ初期設定みたいなのがはじまります。
......
package name: (react-tutorial)
version: (1.0.0)
description:
entry point: (index.js) webpack.config.js
test command:
git repository:
keywords:
author: Your Name
license: (ISC)
......
おそらくここまでは問題なく進む。
この次の工程で僕はエラー祭りでした。
$ npm install --save-dev webpack webpack-cli webpack-dev-server
$ npm install -g webpack webpack-cli
$ npm install --save-dev @babel/core @babel/preset-env @babel/preset-react babel-loader
$ npm install --save-dev react react-dom
これの1つ目を実行したところでエラーが大量に出てきました。
まずはエラーコードを見てみると前半の方に
No Xcode or CLT version detected!
と書かれていましたのでこのままコピペしてググってみました。
→たどり着いたサイト:https://qiita.com/UTA6966/items/6f8b1fd21c2dc9591488
実行したコマンドを載せます。
$ nodebrew install 8
$ sudo xcode-select --switch /Applications/Xcode.app
$ npm insatall node-gyp
おそらく2つ目のやつが必要だったっぽいです。
Command Line Tools
とは...
Macのコマンドを実行するためのコマンドツール群らしく、homebrew等のプログラムのインストールにも使うそうです。
んでここの
$ sudo xcode-select --switch /Applications/Xcode.app
でCommand Line Tools
をXcode同梱版に設定した、ということのようです。これによって無事エラーなく実行することができました。
あと、
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
こんなエラーコードが出るかと思いますがこれは無視して大丈夫だそうです。
では気を取り直して次!
$ touch webpack.config.js
touch
コマンドはファイルを作ることができるコマンド。
webpack.confing.jsのファイルに「バンドリングルール」を書いていくそうです。
バンドリングルールとは、おそらくweb読み込むときに「ここにこれがあるよ!」とかを教えてあげるためのモノな気がします()
バンドリングルール書いていきましょう
var debug = process.env.NODE_ENV !== "production";
var webpack = require('webpack');
var path = require('path');
module.exports = {
context: path.join(__dirname, "src"),
entry: "./js/client.js",
module: {
rules: [{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
use: [{
loader: 'babel-loader',
options: {
presets: ['@babel/preset-react', '@babel/preset-env']
}
}]
}]
},
output: {
path: __dirname + "/src/",
filename: "client.min.js"
},
plugins: debug ? [] : [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
]
};
これの書き方などは別途後で調べます。
メモ:https://original-game.com/how-to-use-webpack-config-js/
続いて、src/index.htmlを作成
$ touch ./src/index.html
そしてhtmlファイルに次のように書き込みましょう。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>React Tutorials</title>
<!-- change this up! http://www.bootstrapcdn.com/bootswatch/ -->
<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.6/cosmo/bootstrap.min.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<div id="app"></div>
<script src="client.min.js"></script>
</body>
</html>
htmlファイルの中でclient.min.js
を読み込むように指定しています。webpackによって生成される、必要最低限のコードになったclient.js
ファイルのようです。
client.js
を書いてあげればそれをhtmlが読みこんで表示してくれるのですね。
では早速client.js
を書いていきましょう。
やっとReact初登場
import React from "react";
import ReactDOM from "react-dom";
class Layout extends React.Component {
render() {
return (
<h1>Welcome!</h1>
);
}
}
const app = document.getElementById('app');
ReactDOM.render(<Layout/>, app);
このファイル含めReactの理解は後でするとして、ここまででとりあえず準備完了のため
webpackコマンドからclient.min.jsファイルを作成したあとにindex.htmlファイルを開きましょう。
$ webpack --mode development
これでclient.jsなどをコンパイルしました。
じゃあ早速chromeに表示しよう!
開発用webサーバを起動していきます
$ ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --content-base src --mode development
これを実行すると開発用webサーバが起動し、htmlファイルなどに変更を加えるたびに画面が更新されます
chromeなどで
http://localhost:8080
とURLにうってみてください!
It works!
と表示されていたら成功です!
また
./src/js/index.js
に変更を加えてみましょう
import React from "react";
import ReactDOM from "react-dom";
class Layout extends React.Component {
render() {
return (
<h1>Welcome!</h1>
);
}
}
const app = document.getElementById('app');
ReactDOM.render(<Layout/>, app);
It works!をWelcome!にしました
こうして保存すると
Welcome!
と変更されました!
前準備終了!
やっとReactの文法などについて始まります。
(2019/12/18作成。)
以降の日誌
【day2】同日更新
https://qiita.com/se_n_pu_u_ki/items/50a64ffc3f643e9fd15f
Author And Source
この問題について(<day1>Webアプリ完成するまで続ける開発日誌), 我々は、より多くの情報をここで見つけました https://qiita.com/se_n_pu_u_ki/items/e92bfa9bdadc1316d2f1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .