Node.jsとは?
フロントエンドエンジニアですが、技術の幅を広げる為にNode.jsをやろうと思い、まずは概要を簡単ですがまとめました。
Node.jsはサーバーサイドのJavaScript実行環境
と言われてますが、これだけだとピンとこないですね。さらに詳しく説明すると、
Node.jsは「V8」というJavaScript実行エンジンで作られてる。
(V8はGoogleが開発しているオープンソースのJavaScript実行エンジンです。V8はNode.jsに限らず、GoogleChromeでも採用されています。)
つまり、Node.js環境をサーバー上に作る
→ サーバーサイドでJavaScriptを実行できる
→ JavaScriptでサーバーサイドを実装できるという事です。
もちろんNode.js固有の文法やAPIが沢山あるので、フロントエンドのJS力だけで良いという訳ではないですが、慣れ親しんだJSでサーバーも作れるのは全く違う言語を覚えるよりはとっつきやすいかもしれません。(ただ本気でNode.jsを習得するのと他のサーバー言語を習得するコストはあまり変わらないとも言われてます。。)
ちなみに、他ブラウザのJavaScript実行エンジンは、
・Firefox: SpiderMonkey
・Safari: JavaScriptCore
・MicrosoftEdge: Chakra/V8
らしいです。
クライアントの開発環境としても使われる
ReactやVueなどの開発に使われるwebpack-dev-serverを使ってローカルサーバーを立てるのにNode.jsは使われています。
npmとは?
Node Package Managerの略で、Node.jsの実装はnpmを活用して行ないます。
npmに登録されてるパッケージであれば(=Node.jsパッケージとして流通してる)、npmを使って簡単にインストールできます。npmでインストールしたパッケージはnode_modules配下に入りimport, requireで使えます。
「パッケージ」というのはライブラリやフレームワークのことで、わざわざライブラリのLPに行ってダウンロードして、プロジェクトディレクトリに置いて、なんて事しなくてもnpmコマンドを使えば一発で取り込めると言うことです。
yarn: Facebook製のパッケージマネージャー
npmでインストールする各種パッケージは本体はリモートにあるので、それを取得してインストールするクライアントはnpmじゃなくてもいい。yarnは高速で信頼性が高く、依存関係も安全に保てる。
余談:
以前業務でフロントのプロジェクトの中に組み込まれていた結構大きめな処理を外に出して、npmに登録し、外部ライブラリとして取り込んで使う運用になった事がありました。
Express
Expressは、Node.jsで一番人気なフレームワークです。
プレーンなNode.jsだと大変な開発を楽にしてくれる優れものです。
以下、基本手順のコードだけを抜粋して紹介します。
・Expressオブジェクトの用意
・appオブジェクトの作成
・ルートの設定
・待ち受け開始
//Expressオブジェクト、appオブジェクトの用意import*asexpressfrom"express";constapp=express();//第1引数のアドレスにアクセスした(リクエストが来た)時に、第2引数の関数を呼ぶapp.use('/users',users)
ルートの設定は、routesディレクトリに各ルートのJSファイルを用意して設定します。
constrouter=express.Router();router.get('/',(req,res)=>{//この中で処理をして、最終的に何かしらのレスポンスをする//res.send()であれば、引数の値をレスポンスとして返すconstresponseData="Welcome to Express";res.send(responseData);})
app.listen(3000)
これでプログラムを実行して、http://localhost:3000
にアクセスすると「Welcome to Express」と表示されます。
Express Generator
Expressでアプリケーションを作っても、必要なファイル、モジュールなどは全て自前で用意しないといけないのですが、「基本セット」を最初から用意してくれるライブラリがExpress Generatorです。
Reactでいうところのcreate-react-appみたいなものかと思います。個人開発や学習の為なら間違いなくこれを使ってやるべきですね。
まとめ
本編では、あくまでも基本的な概念やExpressの基本のまとめです。
次は実際に定番のToDoアプリを作ってデプロイまでやってみますので、そこでは詳しいコードを交えた記事にしたいと思います。