义齿jsの詳細構成説明

4031 ワード

express.jsはnodejsのMVC開発フレームワークであり、jadeなど多くのテンプレートをサポートしている.以下、expressのインストールとappについて簡単に説明する.jsファイルの構成は、今後のチュートリアルでexpressを一歩一歩使用します.jsはチャットルームを建てた.
インストールexpress.js
注意:expressページで実行されるルートディレクトリは/publicディレクトリにあるので、スクリプト、レイアウト、ピクチャなどのリソースを参照するには相対パス/javascriptsを使用します./stylesheets;/imagesでいい
npmをインストールすると、インストールが簡単になり、端末で次のコードを実行するだけでいいです.
npm install express -gd
-g代表がNODEにインストールPATHのlibには、-d代表が依存性キットも一緒にインストールされています.-gがない場合は、現在存在するディレクトリがインストールされます(node_modulesのフォルダが作成されます).次のコマンドで両者の違いを比較できます.
npm list -g npm list
npmがなければgithubを使ってgitの最新のexpressをgitすることができます.では、express testappを使用してexpressインスタンスを作成できます.次に例を示します.
cd ~ express testapp cd testapp node app.js
これによりtestappのnodejsアプリケーションが確立され、app.jsはデフォルトのアプリケーションマスターjsです.次はappについて詳しくお話しします.jsの各構成.
導入モジュール
var express = require('express');
 var app = module.exports = express.createServer();

require()はnodeです.jsが提供する関数は、他のモジュールを導入してモジュールの関数と変数を呼び出すことができ、デフォルトではnode.jsは$NODE_にPATHと現在のjsが存在するディレクトリの下のnode_modulesフォルダに行ってモジュールを探します.requireは、自分が書いたモジュールをロードするためにも使用できますよ~node.jsのモジュールメカニズムは、後で紹介する機会があります.
2行目のexpress.createServer()はserverを構築し、中間のmoduleです.exportsもnodeにかかわる.jsのモジュールメカニズムは、後で話します.
义齿jsの詳細構成説明
express.jsはconnectモジュールから継承されているので、node_modulesフォルダの下にconnectモジュールがないとだめです.
viewsパスとテンプレートの設定
次の2行を見てみましょう.
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');

上の2行はviewsフォルダ、すなわちテンプレートフォルダを設定し、_dirnameはnodeです.jsの中のグローバル変数、すなわち実行するjsが存在するパスを取得し、また_filenameは、現在実行されているjsファイル名です.だからapp.set(‘views’, __dirname + ‘/views’);viewsを設定するフォルダです.
そしてapp.set('view engine', 'jade');expressを設定します.jsで使用されるrender engine.ジェイド以外はjsはEJS(embedded javascript)、Haml、CoffeScript、jQuery templateなどのjsテンプレートもサポートしています.
app.use構成
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));

express.bodyParser()はConnect内に構築されたmiddlewareで、ここでクライアントから送信されたpostリクエストをrequestに入れるように設定.bodyで.express.methodOverride()もConnect内蔵であり、POST要求偽装PUT、DELETE、その他のHTTP methodsの処理に協力することができる.app.router()はroute requestsですがexpress.jsの公式文書はこの文があってもなくてもいいし、テストを経ても本当にそうですが、書きましょう.express.static()も、css、js、imgファイルなどの静的requestsを処理するためにConnect内に構築されたmiddlewareです.したがってstatic()で指定したフォルダ内のファイルは直接静的リソースとして吐き出されます.
app.configure設定
app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
  app.use(express.errorHandler());
});

express.errorHandler()は、例外の処理に協力するためにConnectに組み込まれたmiddlewareです.ここでもappを暴露しました.configure()の令の使い方で、最初のパラメータはnodeです.jsの環境設定は,異なる実行環境で異なる程度のdumpを使用するように設定できる.PS:node.jsはNODEを透過していますENVという環境変数で環境設定を取得し、e.g.:コマンド列で、NODE_ENV=production node app.jsはproduction環境に入ることができます.
ルーティングとrequestの処理
OK、次はnodejsがrequestを処理する内容です.
app.get('/', function(req, res){
  res.render('index', {
    title: 'Express'
  });
});

上のコードは、getリクエストルートディレクトリがviewsフォルダのindexテンプレートを呼び出し、入力パラメータtitleが「Express」であり、このtitleはテンプレートファイルで直接使用できることを意味します.
app.get('/', routes.index);
以上のコードと前のコードは効果的ですが、関数をroutes/indexに書きました.jsファイル
expressでpostリクエストを処理するにはappを使用する必要がある.post().次のコードに従います.
app.post('/add', function(req,res){
  res.render('add', {
    sum: req.body.a + req.body.b
  });
});

前にreqについてお話ししました.bodyはexpressです.bodyParser()POSTパラメータを処理した結果.
またgetとpostの方法のほかにappもある.all()は、すべてのリクエスト処理を意味します.
listenを追加しnodejsサーバを起動
app.listen(3000);
console.log(
    "Express server listening on port %d in %s mode",
    app.address().port, 
    app.settings.env);

これまでexpress構成がほぼ分かってきたので、以前のように他の人とhello worldを書いても各行のコードの意味が分からないことはありません.
原文住所:
http://www.veryhuo.com/a/view/39756.html