Node.js がわからないので雑にやってみる
雑にやってみるメモだぞい。
Node.jsとは?
JavaScript 実行環境
Run JavaScript Everywhere
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
(雑訳)
どこでも JavaScript を実行
Node.js® は、開発者がサーバー、Web アプリ、コマンド ライン ツール、スクリプトを作成できる、無料のオープン ソースのクロスプラットフォーム JavaScript ランタイム環境です。
だそうです。
JavaScript 実行環境らしいです。
で?
何が嬉しいの?
教えて、チャッピー先生
![](https://assets.st-note.com/img/1726301591-nuiRc39jgQVox0FhOm8MrIJ4.png?width=1200)
JavaScriptってのは本来はクライアントサイド、フロントエンドで使うものだけど、バックエンドでも使えるようにできちゃうよ……ってコト!?
非同期処理?に強いのかな?
Qiita
nodeとは
やる
とりあえず触ってみないとねってことで、やる。
前提としてあると良さげなもの
括弧内は自分のステータスです。よわ。まあいいいか。
HTML・CSSを何となく読み書きできる(いにしえのオタクは触っているはず。最新のトレンドは知らん)
ターミナルでコマンドを打つ(細かいことは知らん)
VS Codeが使える状態(入ってるけど使いこなしているとは言えない)
JavaScriptが何となくわかる(GASなら多少はわかる)
公式にもこの辺のことがちゃんと書いてありました
公式をちゃんと読んでみる
https://nodejs.org/en このサイトをまずは読んでみる。
ど頭にDownloadがあるから、これをDLしろってコトなんだろう、多分。
何もわからんがDLしてみる。
![](https://assets.st-note.com/img/1726303677-SKontCcJmPeqQMbp143ZFijd.png)
サンプルコード的なものが横にある。
// server.mjs
import { createServer } from 'node:http';
const server = createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World!\n');
});
// starts a simple http server locally on port 3000
server.listen(3000, '127.0.0.1', () => {
console.log('Listening on 127.0.0.1:3000');
});
// run with `node server.mjs`
'node:http'からライブラリ的なものを読み込んで、
createServer的なメソッドがあるらしい、ステータスコードとか書き込んで Hello World! を表示させるのか?
Learn https://nodejs.org/en/learn/getting-started/introduction-to-nodejs
読んでばっかりでもしょうがないので、手を動かすかあ。
環境構築とWebサーバーを作ってみる
この動画を観ながらやってみる。
Node.jsは設計手法みたいなの、って言ってるなー。
ターミナルを立ち上げる
今これはMacでやってるのでターミナルで。というか最近はiTerm2入れてみた。
背景透過になるのがいいかなって。
![](https://assets.st-note.com/img/1726304561-GFkTdaB3NRjfD42mJnoHSrIl.png)
フォルダを作り、そのフォルダに移動し、VS Code立ち上げる。
cdのコマンドを打った後は、noぐらいまで打ったらTabでサジェストするんだぞ!
mkdir nodejs-tutorial-youtube
cd nodejs-tutorial-youtube
code .
VS Code
ターミナル表示しておく。
ターミナル?ねえぞ?っていう人は、⌘J または 下図参照。
![](https://assets.st-note.com/img/1726304970-xCWS3V5IqN24EAU9bhuF0LgD.png?width=1200)
node -v で、Node.jsが入っているか、バージョンがいくつか確認する。
npmが使えるようになったらしい。
node package manager 何でもかんでも略しやがって。
モジュールとかライブラリをインストールしていく際に色々管理してくれるらしい。
package.json ファイルを作成し、Node.jsプロジェクトを素早く始める
npm init -y
オプションでYesをスキップすんのね,
で、JSONできた
/package.json:
![](https://assets.st-note.com/img/1726305650-b12vCkH3tZrIuqcgYWQTy8Kz.png)
![](https://assets.st-note.com/img/1726305634-8VkahEcydnxNXQjtpFCJDf1s.png)
{
"name": "nodejs-tutorial-youtube",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": ""
}
ここで依存関係を管理していく、らしいぞ。
サーバーを作る(準備・前段階編)
touch server.js
ターミナルで上記コマンドでもいいし、VS Code上でポチポチしてもいいので、まずファイル作る。
動作確認
server.jsに適当なコンソールログ書いて、以下を実行する。
node server.js
コンソールログがちゃんと表示されてる。
![](https://assets.st-note.com/img/1726306111-zoYO5KjwQN7hcX9EIdBLGpUa.png?width=1200)
HTTPモジュールを使ってサーバーを作る
npm install --save-dev http
実行すると、パッケージの中に追加された
![](https://assets.st-note.com/img/1726306302-tIhyea4TRCYOGiU93ND5Q7ol.png?width=1200)
scripts を書き換え
"dev":"node server.js"
書き換えると、node server.js の代わりに
npm run dev で以下のように実行できる。
![](https://assets.st-note.com/img/1726306643-zaT29JgG7mLdYIjf6QwPEZDV.png?width=1200)
サーバーを作る
ポート8000でリクエストを受けるWebサーバーを作り、リクエストが来たら「Hello World!」というメッセージをブラウザに表示する
const http = require("http");
const PORT = 8000;
// webサーバーを作ろう
const server = http.createServer((req, res) => {
//ブラウザからアクセスが来た時の処理
res.writeHead(200, {"Content-type": "text/html"});
res.write("<h1>Hello World!</h1>")
});
server.listen(PORT, () => {
console.log("server running!");
});
![](https://assets.st-note.com/img/1726307379-fHReuGrmJQ1dwUi3jyZV8EsM.png?width=1200)
![](https://assets.st-note.com/img/1726307338-rgjehB2i6J1YsnuMXZzlAbf9.png?width=1200)
htmlファイルを作る
htmlファイルを作る
![](https://assets.st-note.com/img/1726307965-WoujZptydrGSLHc5M4ONn0U3.png?width=1200)
毎回、res.write("<h1>Hello World!</h1>") はかったるいし、htmlファイルを別に用意して読み込めばいいよねってことでhtmlファイルを作る。
VS Codeでhtml書いたの初めてなんですけど、!で補完されるし、閉じタグも補完してくれるし、神では?という20年前からやってきた人ムーブになっていました。
メモ帳でチマチマ書いたり、IE対応の謎の呪文を書いてたのは何やったんや。
server.jsを書き換える
const http = require("http");
const PORT = 8000;
const html = require("fs").readFileSync("./index.html");
// webサーバーを作ろう
const server = http.createServer((req, res) => {
//ブラウザからアクセスが来た時の処理
res.writeHead(200, {"Content-type": "text/html"});
res.write(html);
});
server.listen(PORT, () => {
console.log("server running!");
});
サーバーを起動させる
Control Cで一旦サーバー落とす、npm run devで走らせて、確認する。
![](https://assets.st-note.com/img/1726308821-O8ZCGW4iN6KI0dT2u9xMhQVb.png?width=1200)
手作業でサーバー落としたり起動したり、これを毎回はつらたんなので、次。
リロードしたら再読してくれるモジュール入れる
npm install -g nodemon
json書き換える
![](https://assets.st-note.com/img/1726308821-roZN9XUTPaKD7tBpvMc5yz0W.png?width=1200)
ターミナルで npm run dev
![](https://assets.st-note.com/img/1726308821-T9YmPrcIJXE1ltdheoxRHOiS.png?width=1200)
html書き換えてみる
![](https://assets.st-note.com/img/1726308821-h6RjK4t7bYPyTZHiaNFnO9cI.png?width=1200)
server.jsで保存
![](https://assets.st-note.com/img/1726308821-lwA5x67nEgGXqV3sLyImzpO2.png?width=1200)
ブラウザリロード
![](https://assets.st-note.com/img/1726308821-abWC0ThMYIEBtirKjoOfNzxU.png?width=1200)
今後
![](https://assets.st-note.com/img/1726308821-hvdQRZyGlciSVOagE72Kjq6U.png)
リクエストがGETの時、POSTの時の出しわけもできるよね、っていう、なるほど。
Node.js単体ではなく、フレームワーク?としてExpressっていうのを使っていくのが一般的らしいぞ!
続きはこれかなあ
https://www.youtube.com/watch?v=Zk7tpzaKv0U
とりあえず今日はこんな感じで!
次回
いいなと思ったら応援しよう!
![good-sun(a03)](https://assets.st-note.com/production/uploads/images/74915135/profile_e6435615735e2ec66a673a40d90bb4a5.png?width=600&crop=1:1,smart)