495

私はNode.jsの学習者です。

  1. Express.jsとは何ですか?
  2. Node.jsでの目的は何ですか?
  3. なぜ実際にExpress.jsが必要なのですか?Node.jsで使用することはどのように役立ちますか?
  4. Redisとは何ですか?Express.jsに付属していますか?
4

10 に答える 10

425

1)Express.jsとは何ですか?

Express.jsNode.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のようなもの:

シナトラのように:

他の:

ミドルウェア:

静的サイトジェネレーター:

于 2013-07-07T17:54:00.820 に答える
295

これは単純化しすぎていますが、Express.jsNode.jsに対して RubyonRailsまたはSinatraRubyに対してです。

Express 3.xは、サーバー側でWebアプリケーションをMVCアーキテクチャに編成するのに役立つ軽量のWebアプリケーションフレームワークです。テンプレート言語にはさまざまな選択肢を使用できます(EJSJadeDust.jsなど)。

次に、 MongoDBMongoose (モデリング用)などのデータベースを使用して、Node.jsアプリケーションのバックエンドを提供できます。Express.jsは基本的に、ルートからリクエストやビューの処理まで、すべてを管理するのに役立ちます。

Redisはキー/値ストアであり、Node.jsアプリケーションのセッションとキャッシュに一般的に使用されます。あなたはそれでもっとたくさんのことができます、しかしそれは私がそれを使っているものです。私はMongoDBを使用して、ラインアイテム<->注文<->ユーザーリレーションシップなどのより複雑なリレーションシップを作成しています。Express.jsで動作するモジュール(特にconnect-redis)があります。サーバーにRedisデータベースをインストールする必要があります。

Express 3.xガイドへのリンクは次のとおりです:https ://expressjs.com/en/3x/api.html

于 2012-09-27T07:27:33.643 に答える
20
  1. Express.jsとは何ですか?

Express.jsはNode.jsWebアプリケーションサーバーフレームワークであり、シングルページ、マルチページ、およびハイブリッドWebアプリケーションを構築するために設計されています。これは、node.jsの事実上の標準サーバーフレームワークです。

Express上に構築されたフレームワーク。

いくつかの人気のあるNode.jsフレームワークがExpress上に構築されています。

LoopBack:動的なエンドツーエンドのRESTAPIをすばやく作成するための高度に拡張可能なオープンソースのNode.jsフレームワーク。

Sails:実用的な本番環境に対応したアプリを構築するためのNode.js用のMVCフレームワーク。

Kraken:構造と規則を提供することでExpressを拡張する安全でスケーラブルなレイヤー。

MEAN:Webアプリケーション開発を簡素化および加速する意見のあるフルスタックJavaScriptフレームワーク。

  1. Node.jsでの目的は何ですか?
  2. なぜ実際にExpress.jsが必要なのですか?Node.jsで使用するとどのように役立ちますか?

Expressは、Connectミドルウェアの完全にシンプルなルーティングとサポートを追加し、多くの拡張機能と便利な機能を可能にします。

例えば、

  • セッションをしたいですか?それはそこにあります
  • POST本文/クエリ文字列の解析が必要ですか?それはそこにあります
  • 翡翠、口ひげ、ejsなどを簡単にテンプレート化したいですか?それはそこにあります
  • サーバー全体がクラッシュしないような適切なエラー処理が必要ですか?
于 2016-04-12T11:44:26.057 に答える
12
  1. Express.jsは、Node.js用のモジュラーWebフレームワークです。
  2. Webアプリケーションやサービスを簡単に作成するために使用されます
  3. Express.jsは開発を簡素化し、安全でモジュール式の高速なアプリケーションの作成を容易にします。昔ながらのNode.jsですべてを行うことができますが、セキュリティ上の懸念(文字列を適切にエスケープしないなど)など、いくつかのバグが表面化する可能性があります(そして表面化するでしょう)。
  4. Redisは、高速なパフォーマンスで知られるインメモリデータベースシステムです。いいえ。ただし、Redisクライアントを使用してExpress.jsで使用できます。

これ以上簡潔にすることはできません。他のすべてのニーズと情報については、Googleがあなたの友達です。

于 2015-04-30T21:46:36.410 に答える
7

ExpressJSは、 NodeJS上にある最低限のWebアプリケーションフレームワークです。

WebApp、RESTFULAPIなどをすばやく構築するために使用できます。

Jade、EJSなどの複数のテンプレートエンジンをサポートします。

ExpressJSは、コア機能として最小限の機能のみを保持しているため、デフォルトでサポートされているORMまたはDBはありません。しかし、少しの努力で、expressjsアプリをさまざまなデータベースと統合できます。

ExpressJSアプリの作成に関するスタートガイドについては、次のリンクを参照してください。

ExpressJS入門チュートリアル

于 2016-08-29T21:37:19.540 に答える
4

Expressは、クライアントからの入力/接続要求を「リッスン」するサーバーに基づくアプリケーションに使用できるNodeのモジュールフレームワークです。Nodeで使用する場合は、Nodeモジュールから組み込みのExpressファイルの使用を要求しているだけです。

Expressは、NodeJSにバックエンドを持つ多くのWebアプリの「バックボーン」です。私の知る限り、その主な資産は、2つのホスト間の「相互作用」のサービスを処理するルーティングシステムの提供です。帆など、それに代わるものはたくさんあります。

于 2017-02-15T09:29:37.423 に答える
2

Express.jsはノードに使用されるフレームワークであり、ノードjsのWebアプリケーションとして最も一般的に使用されます。

Expresshttps://www.youtube.com/watch?v= QEcuSSnqvckを使用してノードアプリをすばやく設定する方法に関するビデオへのリンクは次のとおりです。

于 2016-09-11T03:57:52.650 に答える
1

Express.jsはTJHolowaychukによって作成され、現在はコミュニティによって管理されています。これは、node.jsで最も人気のあるフレームワークの1つです。Expressは、WebアプリケーションやRESTful APIなどのさまざまな製品の開発にも使用できます。詳細については、expressjs.comの公式サイトを参照してください。

于 2017-05-22T05:52:28.160 に答える
1

ExpressJSは、Webサイト、Webアプリ、およびバックエンドを構築するための単純なAPIを提供するWebアプリケーションフレームワークです。ExpressJSを使用すると、低レベルのプロトコルやプロセスなどについて心配する必要はありません。Node.js用の高速で非ピニオンのミニマリストWebフレームワーク

Pug(以前はJadeと呼ばれていました)は、HTMLテンプレートを作成するための簡潔な言語です。それ-</p>

HTMLを生成します動的コードをサポートします再利用性(DRY)をサポートしますこれはExpressで使用される最も人気のあるテンプレート言語の1つです。

于 2021-04-20T18:28:55.240 に答える
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");
                                  });
  
  
});


于 2021-09-29T14:58:04.973 に答える