35歳から始めるアプリ開発日記 #7
TODOリスト
progateにアカウント登録JS(ES6)の確認(ES5とのギャップがないか確認しようかな)jQueryの確認(シッタカブリな部分がないか確認しようかな)Gitの確認(シッタカブリな部分がないか確認しようかな)Sassの学習(中身知らないので)Reactの学習(中身知らないので)残ってた知らないことについてNode.jsの学習(雰囲気は知ってるけど詳しくないから)
さて次はNode.jsについて学びます
安定の「progate」様
今回はちらほら仕事上耳にする情報があるので
まったく知らないというわけではないです
が
毎度ながら
知らないことってワクワクします
最高ですね
このワクワクを常に感じ続けたい
(わくわく)
個人的になんですが
JavaScriptって今見ているブラウザ側だけで完結する
「クライアントサイドプログラム」と認識しているので
「サーバーサイド」という部分に凄く違和感を覚えてます
そこを解消することが初めのゴールかなぁ
実際の学習時間
1日目:2時間(1章~4章)
2日目:
知らなかったことだけピックアップ
Expressフレームワークを使う
npmを用いたパッケージ取得
app.jsへのexpress読み込み
app.jsでリクエストコントロールをする感じ
(ルーティングというらしい)
※ネットワーク知識が少しあるのでちょっと違和感
URL指定時に正規表現できるのかな?
「app.get('/top.*', ~ 」みたいなルーティングでリクエストとレスポンスを引数で受け取れる
(これはSpringと似てるから違和感はない)表示関連は「EJS拡張子」のファイルを使う
HTML≒EJSと思ってていいらしい静的コンテンツ(CSS/image)を利用する際は参照先をapp.jsで指定する
publicフォルダが静的コンテンツの保管場所となる場合
「app.use(express.static('public');」EJSにはJavaScriptを埋め込める
これ言い回しがややこしいですね
サーバーサイドで動くJavaScriptを埋め込めるが正しいかなと解釈
HTMLでも埋め込めるからね(クライアント側起動なら)EJSでJavaScriptを使う場合は「<% ~ %>」「<%= %>」を利用する
(JSPと同じだろうな)【ここから2章】データベースと連結するにはデータベース用のパッケージをインストールする
※ここから下については
無料で公開しているサンプル処理のコードを見て判断してますMySQLを使う場合の定義方法
※詳細は下部に転記SELECT文を使う場合の定義方法
※詳細は下部に転記EJSへ値を渡す方法
※詳細は下部に転記formからPOSTメソッドで送信したinput値の取得方法
req.body.<name属性の値>formから値を取得する際は「app.js」にエンコード指定を入れる
app.use(express.urlencoded({extended: false}));リダイレクトの書き方はrenderではなくredirectになるだけ
INSERT文を使う場合の定義方法
※詳細は下部に転記【ここから3章】URLにパラメータ付けることをルートパラメータという
削除と編集でルートパラメータを使っているが
これは学習用だからだろうな
ルートパラメータの受け取り方
「app.post('/delete/:id', (req, res) => {」の:idの部分
※"id"は任意の名称
ルートパラメータ名に該当するルートパラメータは「req.params.<ルートパラメータ名>」で利用できる
MySQLを使う場合の定義方法
MySQL利用時の定義例
[app.js]
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost', // サーバー名
user: 'progate', // 接続ユーザー名
password: 'password', // 接続ユーザーパスワード
database: 'list_app' // 接続先DB名
});
SELECT文を使う場合の定義方法
基本構文
connection.query(
'SELECT ~',
() => {
~処理記述~
}
);
() =>の()では「error」と「results」の2つ引数指定でき
SQLの実行結果を取得できる
上ではqueryの第二引数が「()=>{}」だが
第二引数に「[]」配列オブジェクトを指定すると
?の置換処理になるみた
引数が3つになるパターンは「INSERT文を使う場合の定義方法」に記載
EJSへ値を渡す方法
res.renderの第二引数を使う
app.get('/index', (req, res) => {
connection.query(
'SELECT * FROM items',
(error, results) => {
res.render('index.ejs', {items: results});
}
);
});
EJS側は<% items %>で参照可能
※itemsは任意の文字列であり renderの第二引数と合わせる必要あり
INSERT文を使う場合の定義方法
基本構文
connection.query(
'INSERT INTO items (name) VALUES (?)',
[<?を置き換える値>],
(error, results) => {
~処理記述~
}
);
冒頭で書いた「サーバーサイドでの処理を理解」という部分ですが
わかりませんでした
ん~スクリプト言語をどうやってサーバー側で動かすようになってるのか
考え過ぎかな
気になってしまうと より気になる
とりあえずこの曖昧さで進めます
長くなってきたから
続きは次回へ