こんにちは、やまぱんです。
補足コメントや質問、いいね、拡散、是非お願いします🥺!
間違ってたら優しく教えてください!
Contents
モチベ
インフラよりのキャリアでしたが、仕事でもプライベートでも最近少し nodejs にも興味を持ち始めたのでその自分用メモです。
nodejs コマンド
npm init -y
新規Node.jsプロジェクトの初期化。-yオプションで対話的な質問をスキップし、デフォルト設定で初期化。
node server
Node.jsで作成されたサーバーサイドのアプリケーションを起動。
npm run dev
プロジェクト内のpackage.jsonのscriptsセクションで定義されたdevスクリプトを実行し、開発用環境を起動。
npm install -g nodemon
Node.jsアプリケーションの開発時に使用するnodemonツールをグローバルにインストール。ファイル変更を検知し、サーバーを自動再起動。
npm install express
このコマンドは、npm(Node Package Manager)を使用して "express" パッケージをインストールします。ExpressはNode.jsで利用される人気のあるWebアプリケーションフレームワークであり、シンプルで柔軟なルーティングやミドルウェア機能を提供します。これを使うことで、Node.jsで簡単かつ効果的にWebサーバーを作成できます。
package.json 例
{
"name": "www",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "node server.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"http": "^0.0.1-security"
}
}
この package.json ファイルは、基本的なプロジェクト構成を示しており、npm run dev を実行すると server.js ファイルが実行されるようになっています。
- name: プロジェクトの名前(この例では "www")。
- version: プロジェクトのバージョン(この例では "1.0.0")。
- description: プロジェクトの説明(空欄)。
- main: エントリーポイントとなるメインのファイル(この例では "index.js")。
- scripts: 実行可能なスクリプトを定義するオブジェクト。例えば、npm run devで実行されるスクリプトが "node server.js"。
- keywords: プロジェクトのキーワード(空配列)。
- author: プロジェクトの作者(空欄)。
- license: プロジェクトのライセンス(この例では "ISC")。
- devDependencies: 開発時にのみ必要な依存関係。ここでは "http" パッケージが含まれています。
Server.js 例
console.log('Server-side code node js running');
const http = require('http');
const PORT = 8000;
const html = require('fs').readFileSync('./index.html','utf-8');
//Webserverを作る
const server = http.createServer(function (req, res) {
//ブラウザからアクセスが来た時の処理
res.writeHead(200, {'Content-Type': 'text/html','Author':'yamapan','Date':'2024/01/18'});
res.end(html);
});
server.listen(PORT,() => {
console.log('Server runnning on: http://localhost:%s', PORT);
});
このコードは非常に基本的なWebサーバーの例で、指定されたポートでリクエストを受けると、指定されたHTMLコンテンツを返します。
-
console.log('Server-side code node js running');: サーバーサイドのコードが実行されていることをコンソールにログとして出力しています。
-
const http = require('http');: Node.jsのhttpモジュールを使用してHTTPサーバーを作成するために必要なモジュールを取り込んでいます。
-
const PORT = 8000;: サーバーがリッスンするポート番号を指定しています。
-
const html = require('fs').readFileSync('./index.html', 'utf-8');: fsモジュールを使用して、index.html ファイルを同期的に読み込みます。
-
const server = http.createServer(function (req, res) { / ... / });: HTTPサーバーを作成し、リクエストが来た時の処理を定義しています。
-
res.writeHead(200, {'Content-Type': 'text/html', 'Author': 'yamapan', 'Date': '2024/01/18'});: レスポンスヘッダーを設定しています。ここではステータスコード200(成功)と、Content-Typeがtext/htmlになっています。
-
res.end(html);: レスポンスボディにhtml変数(index.htmlの中身)を設定し、リクエストに対してレスポンスを返しています。
- server.listen(PORT, () => { / ... / });: サーバーを指定されたポートでリッスンし、リッスンが開始されたらコンソールにログを出力しています。