私はNode.jsの学習者です。
- Express.jsとは何ですか?
- Node.jsでの目的は何ですか?
- なぜ実際にExpress.jsが必要なのですか?Node.jsで使用することはどのように役立ちますか?
- Redisとは何ですか?Express.jsに付属していますか?
1)Express.jsとは何ですか?
Express.jsはNode.jsフレームワークです。これは現在最も人気のあるフレームワークです(NPMで最もスターが付けられています)。
。
これは、Connectミドルウェアの構成ときめ細かいシンプルさを中心に構築されています。Express.jsをRubySinatraと比較し、かさばる意見のあるRubyonRailsと比較する人もいます。
2)Node.jsでの目的は何ですか?
同じコードを何度も繰り返す必要がないこと。Node.jsは、HTTPモジュールを備えた低レベルのI/Oメカニズムです。HTTPモジュールを使用するだけの場合は、ペイロード、Cookieの解析、セッションの保存(メモリ内またはRedis内)、正規表現に基づく適切なルートパターンの選択など、多くの作業を再実装する必要があります。Express.jsを使用すると、それを使用することができます。
3)なぜ実際にExpress.jsが必要なのですか?Node.jsで使用するとどのように役立ちますか?
最初の答えはあなたの質問に答えるはずです。いいえの場合は、プレーンなNode.js(つまり、コアモジュールのみを使用)で小さなREST APIサーバーを作成してから、Express.jsで作成してみてください。後者の場合、時間とコード行が5〜10分の1になります。
Redisとは何ですか?Express.jsに付属していますか?
Redisは、高速で永続的なKey-Valueストレージです。オプションで、Express.jsとのセッションを保存するために使用できますが、その必要はありません。デフォルトでは、Express.jsにはセッション用のメモリストレージがあります。Redisは、メールジョブなどのキューイングジョブにも使用できます。
Express.jsを使用したRESTAPIサーバーに関するチュートリアルを確認してください。
MVCですが、それ自体ではありません
Express.jsは、それ自体がmodel-view-controllerフレームワークではありません。MongoDB用のMongoose、SQLデータベース用のSequelize( http://sequelizejs.com ) 、多くのデータベース用のWaterline(https://github.com/balderdashy/waterline )などの独自のオブジェクトリレーショナルマッピングライブラリをに持ち込む必要があります。スタック。
代替案
考慮すべきその他のNode.jsフレームワーク(https://www.quora.com/Node-js/Which-Node-js-framework-is-best-for-building-a-RESTful-API):
更新:Node.jsフレームワークを選択する際に役立つこのリソースをまとめました:http://nodeframework.com
UPDATE2:nodeframework.comにいくつかのGitHub統計を追加したので、1ページで30以上のフレームワークのソーシャルプルーフ(GitHubスター)のレベルを比較できるようになりました。
フルスタック:
ただのRESTAPI:
Ruby on Railsのようなもの:
シナトラのように:
他の:
ミドルウェア:
静的サイトジェネレーター:
これは単純化しすぎていますが、Express.jsはNode.jsに対して、 RubyonRailsまたはSinatraはRubyに対してです。
Express 3.xは、サーバー側でWebアプリケーションをMVCアーキテクチャに編成するのに役立つ軽量のWebアプリケーションフレームワークです。テンプレート言語にはさまざまな選択肢を使用できます(EJS、Jade、Dust.jsなど)。
次に、 MongoDBとMongoose (モデリング用)などのデータベースを使用して、Node.jsアプリケーションのバックエンドを提供できます。Express.jsは基本的に、ルートからリクエストやビューの処理まで、すべてを管理するのに役立ちます。
Redisはキー/値ストアであり、Node.jsアプリケーションのセッションとキャッシュに一般的に使用されます。あなたはそれでもっとたくさんのことができます、しかしそれは私がそれを使っているものです。私はMongoDBを使用して、ラインアイテム<->注文<->ユーザーリレーションシップなどのより複雑なリレーションシップを作成しています。Express.jsで動作するモジュール(特にconnect-redis)があります。サーバーにRedisデータベースをインストールする必要があります。
Express 3.xガイドへのリンクは次のとおりです:https ://expressjs.com/en/3x/api.html
Express.jsはNode.jsWebアプリケーションサーバーフレームワークであり、シングルページ、マルチページ、およびハイブリッドWebアプリケーションを構築するために設計されています。これは、node.jsの事実上の標準サーバーフレームワークです。
Express上に構築されたフレームワーク。
いくつかの人気のあるNode.jsフレームワークがExpress上に構築されています。
LoopBack:動的なエンドツーエンドのRESTAPIをすばやく作成するための高度に拡張可能なオープンソースのNode.jsフレームワーク。
Sails:実用的な本番環境に対応したアプリを構築するためのNode.js用のMVCフレームワーク。
Kraken:構造と規則を提供することでExpressを拡張する安全でスケーラブルなレイヤー。
MEAN:Webアプリケーション開発を簡素化および加速する意見のあるフルスタックJavaScriptフレームワーク。
Expressは、Connectミドルウェアの完全にシンプルなルーティングとサポートを追加し、多くの拡張機能と便利な機能を可能にします。
例えば、
これ以上簡潔にすることはできません。他のすべてのニーズと情報については、Googleがあなたの友達です。
ExpressJSは、 NodeJS上にある最低限のWebアプリケーションフレームワークです。
WebApp、RESTFULAPIなどをすばやく構築するために使用できます。
Jade、EJSなどの複数のテンプレートエンジンをサポートします。
ExpressJSは、コア機能として最小限の機能のみを保持しているため、デフォルトでサポートされているORMまたはDBはありません。しかし、少しの努力で、expressjsアプリをさまざまなデータベースと統合できます。
ExpressJSアプリの作成に関するスタートガイドについては、次のリンクを参照してください。
Expressは、クライアントからの入力/接続要求を「リッスン」するサーバーに基づくアプリケーションに使用できるNodeのモジュールフレームワークです。Nodeで使用する場合は、Nodeモジュールから組み込みのExpressファイルの使用を要求しているだけです。
Expressは、NodeJSにバックエンドを持つ多くのWebアプリの「バックボーン」です。私の知る限り、その主な資産は、2つのホスト間の「相互作用」のサービスを処理するルーティングシステムの提供です。帆など、それに代わるものはたくさんあります。
Express.jsはノードに使用されるフレームワークであり、ノードjsのWebアプリケーションとして最も一般的に使用されます。
Expresshttps://www.youtube.com/watch?v= QEcuSSnqvckを使用してノードアプリをすばやく設定する方法に関するビデオへのリンクは次のとおりです。
Express.jsはTJHolowaychukによって作成され、現在はコミュニティによって管理されています。これは、node.jsで最も人気のあるフレームワークの1つです。Expressは、WebアプリケーションやRESTful APIなどのさまざまな製品の開発にも使用できます。詳細については、expressjs.comの公式サイトを参照してください。
ExpressJSは、Webサイト、Webアプリ、およびバックエンドを構築するための単純なAPIを提供するWebアプリケーションフレームワークです。ExpressJSを使用すると、低レベルのプロトコルやプロセスなどについて心配する必要はありません。Node.js用の高速で非ピニオンのミニマリストWebフレームワーク
Pug(以前はJadeと呼ばれていました)は、HTMLテンプレートを作成するための簡潔な言語です。それ-</p>
HTMLを生成します動的コードをサポートします再利用性(DRY)をサポートしますこれはExpressで使用される最も人気のあるテンプレート言語の1つです。
その力の完璧な例
router.route('/recordScore').post(async(req, res) => {
let gold_nation = req.body.gold && req.body.gold.nationality;
let silver_nation = req.body.silver && req.body.silver.nationality;
let bronze_nation = req.body.bronze && req.body.bronze.nationality;
let competition_id = req.body.competition_id;
console.log(gold_nation)
console.log(silver_nation)
req.body.gold && await country.updateOne({"flag" : gold_nation}, { $inc: { gold: 1 } });
req.body.silver && await country.updateOne({"flag" : silver_nation}, { $inc: { silver: 1 } });
req.body.bronze && await country.updateOne({"flag" : bronze_nation}, { $inc: { bronze: 1 } });
console.log(competition_id)
//await competition.updateOne({"_id" : competition_id}, {$set: {recorded : true}});
//!! Uncomment this and change model/competition.ts set recorer to recorded
// this is commented out so you can test adding medals for every case and not creating competitions every time
res.status(200).json("Success");
});
async record(){
let index = this.competitions.findIndex(e => e._id == this.selectedCompetition);
let goldIndex = this.competitors.findIndex(e => e._id == this.goldWinner);
let silverIndex = this.competitors.findIndex(e => e._id == this.silverWinner);
let bronzeIndex = this.competitors.findIndex(e => e._id == this.bronzeWinner);
console.log(this.competitors[goldIndex]);
console.log(this.competitors[1-goldIndex]);
this.sportService.recordCompetition(this.competitors[goldIndex],
this.competitors[1-goldIndex],
null,
this.competitions[index]).subscribe((m:string) => this.reset(m))
}
reset(message: string){
this.statusMessage = message;
if(message == "Success"){
this.competitions = this.competitions.filter( (c) => c._id != this.selectedCompetition);
this.goldWinner = '';
this.silverWinner = '';
this.bronzeWinner = '';
}
setTimeout(()=>{
this.statusMessage = '';
}, 3000);
}
router.route('/registerCompetitor').post(async(req, res) => {
//! PROVJERI DA LI JE FORMIRANJE TAKMICENJA ZAVRSENO
let competitors = req.body.map( c => ({
name: c.name,
gender: c.gender,
nationality: c.nationality,
sport: c.sport,
disciplines: c.disciplines
}));
console.log(competitors)
await country.updateOne({"flag" : competitors[0].nationality}, { $inc: { numberOfCompetitors: competitors.length } });
await competitor.collection
.insertMany(competitors)
.then( u => {
res.status(200).json("Ok")
})
.catch(err =>{ res.status(400).json("notOk");
});
});