2019年12月19日午後02時16分36秒
1.エクスプレスプロフィール
1.1はじめに
エクスプレス枠組みノードフレームの背景、とjQueryので、zepto、YUI、ブートストラップではない事。
バックグラウンドでのエクスプレスの人気、とjQuery、などの事実上の企業の標準です。
ネイティブノードの開発は、あなたは多くの問題があります。例えば:
■提示静的なページは、各HTTP要求に対処するためには不便でなく、問題304は考えます
■処理コードをルーティングすることは、正規表現と文字列関数の多くを書く必要が直感的に明らかではないが、
あなたがビジネスを書くことに集中することはできません■、他のものの多くは考慮すべき
英語公式サイト:http://expressjs.com/
中国の公式ウェブサイト:http://www.expressjs.com.cn/
Expressのインストールフレーム、コマンドNPMを使用することです。
自動的に変更package.jsonファイルを示し--saveパラメータ、自動的に依存関係を追加します。
1.2ミドルウェアの概念
ブラウザがサーバにリクエストを送信した後、サーバは直接要求することによって、過去のデータ要求(ユーザ入力データとブラウザ自体のデータ情報)を行う。物性的ターゲティング。これは、そこに取引がうまく処理されています行わこれらのデータ分類の関数である、とするために使用発呼要求オブジェクトをさせなければなら途中であり、このプロセスでは、我々は、機能のミドルウェアを処理するデータを言いたいです。このように、ミドルウェアは、以下の点に要約することができます。
1は、完全なイベント機能のいくつかの処理機能をカプセル化します。
2は、非組み込みミドルウェアの必要性インストール後、あなたが実行するためのファイルが必要です。
図3は、おそらくいくつかの複合体をカプセル化しますが、それは確かに一般的な機能です。
1.2.1 app.use()
app.use([path],function)
パス:urlは、ルーティングパスにこの中間体の使用を意味し、ルート、デフォルトパラメータを「/」であります
機能:機能のミドルウェア
この関数は、ミドルウェアであるように理解することができますfunction(request,response,next)
1.2.2組み込みミドルウェア
express.static `Expressは唯一、内蔵されたミドルウェア。静的リソースファイルをサーブ。
app.use(express.static(__dirname + '/public'));
サービス開始:ノードindex.js
ブラウザアクセス:HTTP:// localhostを:1234 /コンテンツ/public/index.htmlを表示
ブラウザアクセス:HTTP:// localhostを:1234 / hello.htmlは /public/hello.htmlコンテンツを表示します
ミドルウェアをカスタマイズする方法1.2.3
上記構成のミドルウェアでは、ミドルウェアを使用したときに、第2引数は、しかし、カスタムミドルウェアの機能であり、このの一部が機能であるシフトことを知っています。
この機能の三つのパラメータがあります(reqは、RES、次の)
各要求がサーバに到着すると、nodejsはリクエストオブジェクトリクエスト(要求)を作成し、リクエストオブジェクトは、クライアントのアップにより提出されたデータが含まれています。しかし、また、レスポンスオブジェクト(応答)を作成し、レスポンスオブジェクトは、クライアントへの応答データ・サーバの責任です。)アプリケーションが複数のミドルウェアを使用することができるので、最後のパラメータは、次の方法であり、ミドルウェアを実行するために、ミドルウェアは、次いで、(次を実行しなければなりません。
1.2.4 サードパーティのミドルウェア
サードパーティ製のミドルウェアについては、ここではの使用はそれを得るother'llことがより重要と一般的に使用される、いくつかのノウハウの一部を分析します。
body-parser
:身体データを解析し、Requestオブジェクトのボディプロパティとして保存します。
cookie-parser
:Requestオブジェクトのクッキープロパティとしてクッキーでクライアントから、それ保存データを解析
express-session
:セッションデータを、対応するサーバー生成セッションIDを解析し、セッション属性Requestオブジェクトとして保存
query
このミドルウェアは、JSオブジェクトへのURLのクエリ文字列からの変換、およびクエリーのプロパティRequestオブジェクトとして保存されます。第四版では、このミドルウェアは、インストールせずに構築されています。
2.ルーティング
2.1 app.get()
res.send()
res.render()
app.listen()
app.get("/",function(req,res){
res.send("hello");
});
var express = require("express");
var app = express();
app.get("/",function(req,res){
res.send("你好");
});
app.get("/haha",function(req,res){
res.send("这是haha页面,哈哈哈哈哈哈");
});
app.get(/^\/student\/([\d]{10})$/,function(req,res){
res.send("学生信息,学号" + req.params[0]);
});
app.get("/teacher/:gonghao",function(req,res){
res.send("老师信息,工号" + req.params.gonghao);
});
app.listen(3000);
2.2のgetアクセスURL
get要求は、Webサイトにアクセスするときに、何かの操作を行います。
app.get("网址",function(req,res){
});
あなたがこのウェブサイトを扱うのいずれかの方法を要求する場合は、すべての書き込み
app.all("/",function(){
});
注意:
すべてのGETパラメータ?バックは無視されています。#アンカーも無視します
あなたはまた、処理され、実際の/?ID = 2&セックス=ナン/にルーティングされます。
2.3正規表現、ゲットするパラメータ
正規表現を使用することができます。正規表現、括弧パケット内の未知の部分は、その後req.params [0]、[1]を得ることができます。
コロンは、以上を推奨文言です。
app.get("/student/:id",function(req,res){
var id = req.params["id"];
var reg= /^[\d]{6}$/; //正则验证
if(reg.test(id)){
res.send(id);
}else{
res.send("请检查格式");
}
});
2.4収集パラメータ
//冒号
app.get("/:username/:oid",function(req,res){
var username = req.params["username"];
var oid = req.params["oid"];
res.write(username);
res.end(oid);
});
app.listen(3000);
2.5処理GET、POSTリクエストパラメータ
URLでGETリクエストパラメータ、プライマリノードは、URLパラメータの文字列を使用して、モジュールを識別することが必要です。
エクスプレスでは、モジュールのURLなし。これは、直接req.queryオブジェクトを使用することができます。
app.get("/",function(req,res){
console.log(req.query);
res.send();
});
POST要求は、直接ボディパーサーモジュールを使用する必要がある、発現を得ることができません。使用後は、パラメータがreq.bodyを得ることができます。
フォームは、ファイルのアップロードが含まれている場合でも、あなたはまだ手ごわいモジュールを使用する必要があります。
var bodyParser = require('body-parser')
//模板引擎
app.set("view engine","ejs");
app.get("/",function(req,res){
res.render("form");
});
//bodyParser API
app.use(bodyParser.urlencoded({ extended: false }))
app.post("/",function(req,res){
console.log(req.body);
});
3.静的なファイルアクセス
app.use(express.static("./public"));
app.set()
app.use()
4.テンプレートエンジン
4.1 EJS
テンプレートエンジンEJSを使用します
app.set("viwe engine","ejs");
var express = require("express");
var app = express();
app.set("view engine","ejs");
app.get("/",function(req,res){
res.render("haha",{
"news" : ["我是小新闻啊","我也是啊","哈哈哈哈"]
});
});
app.listen(3000);
注意:express4.Xとexpress3.X差が非常に大きいです。
4.2データ転送app.render(ビュー、[ローカル]、コールバック)
app.get("/",function(req,res){
res.render("haha",{
"news" : ["我是小新闻啊","我也是啊","哈哈哈哈"]
});
});
5.ミドルウェア
5.1次のパラメータ
あなたは、ポストコールバック関数を取得した場合、何の次の引数が存在しない場合、ルートと一致した最初のものは、それが上下に一致しなくなります。
あなたが一致する場合は、ダウン、その後、次のように記述する必要があります)(次の
app.get("/",function(req,res,next){
console.log("1");
next();
});
app.get("/",function(req,res){
console.log("2");
});
GETをルーティングした後、ミドルウェア、順序の最初の試合へのミドルウェア注意を払うことで、これらの事を投稿し、試合は戻っていないだろう。次の機能は、次の試合に続けることができるようにします。
5.2使用()アクション
app.useは()のミドルウェアです。そして、GET、POST異なるが、彼はURLの完全一致ではないということです。しかし、拡大する小型のフォルダが可能です。
例えば、URL:http://127.0.0.1:3000/admin/aa/bb/cc/dd
app.use("/admin",function(req,res){
res.write(req.originalUrl + "\n"); // /admin/aa/bb/cc/dd
res.write(req.baseUrl + "\n"); // /admin
res.write(req.path + "\n"); // /aa/bb/cc/dd
res.end("你好");
});
静的サービス
//静态服务
app.use("/jingtai",express.static("./public"));
6.コンテンツのレンダリング
●ほとんどの場合、)res.render(とコンテンツをレンダリングする、でテンプレート・ファイルのビューに応じてレンダリングされます。フォルダビューを使用したくない場合は、あなたがして、自分のフォルダ名を設定したいです
app.set("view engine","ejs")
●クイックテストページを作成したい場合は、もちろん、あなたがres.sendを使用することができます()。この機能は、自動的に私たちは、Content-Typeヘッダと200ステータスコードを設定するのに役立ち、内容に基づいて行われます。
センド()が一度だけ使用、およびそれを終了することができます。そして、最後は同じではありませんどこ?MIMEタイプを自動的に設定することができます。
●あなたが異なるステータスコードを使用したい場合は、次のことができます。
res.status(404).send('Sorry, we cannot find that!');
●あなたは別のコンテンツタイプを使用したい場合は、次のことができます。
res.set('Content-Type', 'text/html');
時点を変更します。
2019年10月5日12時26分16秒