この記事は、Feiyu の「[翻訳] フロントエンド開発者のための入門ガイド、Node.js、Express、Jade、Mongodb サーバーをゼロから構築する」をもとに編集したものです。Jade を Ejs に変更した理由は、ejs だと思うからです。 WEB プログラマーの習慣は、より正確には、PHP および ASP プログラマーの使用習慣とより一致する必要があります。さて、さっそくチュートリアルを直接始めましょう。
パート 1 – 15 分のインストール
本当にゼロから学びたい場合は、時間をかけて環境をセットアップしてください。難しいことではありません。私は Win8 を使用しているので、Mac と Ubuntu またはその他の *nix システムを使用するためのチュートリアルとは少し異なるように見えますが、基本的には同じです。
ステップ 1 – Node.JS をインストールする
それは簡単です。Node.js 公式 Web サイト にアクセスし、大きな緑色の [インストール] ボタンをクリックすると、システムが自動的に検出され、正しいインストール ファイルがダウンロードされます。 (そうでない場合は、「ダウンロード」ボタンをクリックして、必要なダウンロードを選択します)。インストーラーを実行すれば準備完了です。 Node.js がインストールされており、NPM (Node Package Manager) を使用すると、さまざまな便利なパッケージを Node に簡単にインストールできます。
ステップ 2 – Express をインストールする
Node を実行したので、実際に使用可能なサイトを作成するにはいくつかのことが必要です。次に、Express をインストールする必要があります。Express は、Node を原始的なアプリケーションから、私たちが通常使用する Web サーバーに似た Web サーバーに変えるフレームワークです。 Express が提供するスキャフォールディング機能が必要なので、Express から始める必要があります。次のコマンドを入力します:
c:node>npm install -g Express
このようにして、Express はノードに正しくインストールされ、世界中で利用できるようになります。コマンド ライン ウィンドウに大量の出力が表示されますが、そのほとんどが http 304 リクエストと GET リクエストですが、これは正常です。 Express がインストールされ、使用できるようになります。
ステップ 3 – Express プロジェクトを作成する
Express と Ejs を使用しますが、CSS の前処理には使用しません。 CSS を手動で書きます。 Node および Express データを処理するには、Ejs または他のテンプレート エンジンを使用する必要があります。 HTML を知っていれば、Ejs は難しくありません。集中しないと物事がうまくいかなくなる可能性があることを覚えておいてください。
同じコマンド ライン ウィンドウで次のように入力します:
c:node>express –sessionsnodetest1
Enter を押すと、次のようなものがたくさん表示されます:
C:node>express --sessionsnodetest1
作成:nodetest1
作成:nodetest1/package.json
作成:nodetest1/app.js
作成:nodetest1/routes
作成:nodetest1/routes/index.js
作成:nodetest1/routes/user.js
作成:nodetest1/views
作成:nodetest1/views/index.ejs
作成:nodetest1/public/images
作成:nodetest1/public/javascripts
作成:nodetest1/public
作成:nodetest1/public/stylesheets
作成:nodetest1/public/stylesheets/style.css
依存関係をインストールします:
$ cd nodetest1 && npm install
アプリを実行します:
$ ノード アプリ
ステップ 4 – 依存関係の編集
さて、基本的なプロジェクト構造ができましたが、まだ終わっていません。高速インストール プロセスにより、nodetest1 ディレクトリに package.json というファイルが作成されることがわかります。このファイルをテキスト エディタで開きます。
{
"name": "アプリケーション名",
"バージョン": "0.0.1",
"プライベート": true、
"スクリプト": {
"start": "node app.js"
}、
"依存関係": {
"エクスプレス": "3.4.8",
"ejs": "*"
}
}
これは、アプリケーションとその依存関係を表す標準の JSON 形式のファイルです。少し何かを追加する必要があります。たとえば、mongodb と Monk の呼び出しです。依存関係の部分を次のように変更します:
"依存関係": {
"エクスプレス": "3.4.8",
"ejs": "*",
"mongodb": "*",
"モンク": "*"
}
ステップ 5 – 依存関係をインストールする
これで、プロジェクトの依存関係を定義しました。 * は、NPM に「最新バージョンをインストールする」ように指示します。コマンドラインウィンドウに戻り、nodetest1 ディレクトリに入り、次のように入力します:
C:nodenodetest1>npm install
大量のものを出力します。これは、変更された JSON ファイルを直接読み取り、そのファイル内の依存関係を特定し、必要なファイルをインストールするためです。 NPM がインストールされている場合、プロジェクトに必要なすべての依存関係ファイルが含まれる node_modules ディレクトリが作成されます。
これで、完全に機能するアプリが完成し、実行する準備が整いました。試してみましょう!現在のディレクトリがnodetest1ディレクトリであることを確認し、次のように入力します:
C:nodenodetest1>node app.js
Enter キーを押すと、次のように表示されます:
Express サーバーはポート 3000 で待機しています
素晴らしい。ブラウザを開いて、
http://localhost:3000 と入力すると、Express のようこそページが表示されます。
これで、Express エンジンと Ejs HTML テンプレート エンジンで実行される独自の Node JS WebServer が完成しました。そんなに難しくないですよね?
パート 2 – さて、「Hello, World!」を書きましょう
よく使用するテキスト エディターまたは他の IDE を開きます。私は個人的に Sublime Text を使用するのが好きです。 nodetest1 ディレクトリで app.js を開きます。このファイルはアプリのコアです。次のようなものが表示されるはずです:
var Express = require('express');
var Routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
これは、多数の JavaScript 変数を定義し、いくつかのパッケージと依存関係、ノード関数、およびルートをポイントするだけです。ルートは、MVC のモデルとコントローラーのコレクションに相当し、リクエストの転送を担当し、いくつかの処理ロジックも含みます。 Express がこれらすべてを作成してくれました。ここではユーザー ルートを無視して、(routesindex.js によって制御される) トップレベル ルートの作成を始めましょう。
上記のファイルの最後に次のように記述します:
var app = Express();
この文は重要です。 Express をインスタンス化し、それをアプリ変数に割り当てます。次のコンテンツでは、この変数を使用して一連の Express パラメーターを構成します。入力を続けます:
// すべての環境
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('ビューエンジン', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
これにより、ポート、ビューを検索するディレクトリ、これらのビューの処理に使用するテンプレート エンジン、およびその他のものが設定されます。最後の行にも注目してください。これは、public/ ディレクトリ内の静的ファイルを最上位ディレクトリ内のファイルとしてホストするように Express に指示しています。たとえば、イメージ ディレクトリは c:nodenodetest1publicimages に保存されますが、実際のアクセス アドレスは http://localhost:3000/images/ です。
注: この行を入れる必要があります
app.use(express.bodyParser());
に変更します
app.use(express.urlencoded());
これは、アプリの実行中にノード ウィンドウに表示されるいくつかの警告メッセージを無視するためです。主に、Express とそのプラグインに対する将来の変更の可能性がいくつかあります。この変更を行わないと、プログラムの実行中に特定の機能が期限切れになるという大量の警告が表示されます。
次に、 を追加します。
// 開発のみ
if ('開発' == app.get('env')) {
app.use(express.errorHandler());
}
こうすることで、開発中にエラーチェックを行うことができます。
増加を続ける:
app.get('/', Routes.index);
app.get('/users', user.list);
これにより、URI リクエストが到着したときにどのルートを使用するかをルーターに指示します。ユーザー変数は以前に定義され、/routes/user.js にマップされていることに注意してください。このファイルで定義された list 関数を呼び出します。ここでユーザーのリストを表示できます。
増加を続ける:
http.createServer(app).listen(app.get('port'), function(){
console.log('Express サーバーがポートでリッスンしています ' app.get('port'));
});
最後に、http サーバーを作成して起動します。それだけです。
(上記の内容は、new Express が生成するテンプレートで完成しているため、自分で記述する必要はありません)
さて、役に立つことを書きましょう。インデックス ページには直接「Hello World!」とは書きません。この機会にルート ルーティングの使い方と Ejs エンジンの仕組みを学びます。上記の app.js ファイルの app.get() セクションの後に行を追加します:
app.get('/helloworld', Routes.helloworld);
コマンド ライン ウィンドウで Ctrl C キーを押して app.js プロセスを終了して再起動し、ブラウザを使用して http://localhost:3000/helloworld にアクセスすると、非常に興味深いノード エラーと次のメッセージが表示されます。コマンド ライン ウィンドウのメッセージ: 多数のクラッシュ プロンプト。これは、このパスを処理するようにルーティングを変更していないためです。これをやってみましょう。エディターで、routes ディレクトリに移動し、index.js を見つけて開きます。次のようになります:
/*
* ホームページを取得します。
*/
exports.index = function(req, res){
res.render('index', { title: 'Express' });
};
新しいページを追加しましょう。私は、第 1 レベルのディレクトリごとに独立したルート ファイルを作成することを好みますが、ビューの下に helloworld 用の完全なディレクトリ構造を構築する予定はありません。そのため、現時点ではインデックス ルーティングを使用します。このファイルの最後に次を追加します:
exports.helloworld = function(req, res){
res.render('helloworld', { title: 'Hello, World!' });
};
この URI リクエストの処理を担当しますが、現時点では res.render がレンダリングするための実際のページがありません。これは Ejs の仕事です。 views ディレクトリに移動し、index.ejs を開き、helloworld.ejs ファイルとして保存します。次のようになります:
<頭>
<%= title %>
<%= タイトル %>
<%= title %>
へようこそ