悪いニュースから始めましょう: Node.jsはかなり新しい技術であるため、本格的な Web サイトを作成し、それを維持/運用するプロセスは、現在慣れているものとは大きく異なることに気付くと思います。
Josh3736 の追加: Node.js とそのさまざまなパッケージ (Connect、Express) がどのように機能するかを理解すると、新しいサイトを非常に迅速に開発できることがわかりました。
Node.js に現在存在する荒削りなエッジは、その開発のペースの速さと関連するすべてのモジュールと相まって、物事を複雑にする可能性があり、物事が思ったよりも単純、迅速、単純でなくなる可能性があります。
それはさておき、ここに朗報があります。
Node Package Manager (NPM)には、Node.js の基本的な機能を拡張するための優れたツールとフレームワークが多数あり、Web サーバーの作成に適しています。
最も注目すべきは、Web サーバーを実行するために必要なほとんどすべて (Cookie、セッション、パス ルーティングなど) を含むExpress Frameworkです。さらに、Express はパーシャルをサポートしており、ヘッダーとフッターのインクルードを処理します。
Express はSencha の Connect の上に構築されています。Cookie とセッションは、実際には Connect によって強化されています。Express は、ルーティングを簡素化し、ビュー/パーシャルを処理するものです。したがって、Express に付属するすべての機能が必要ない場合は、代わりに Connect を使用できます。
これらのパーシャルにテンプレートを使用したい場合は、Jade Template Engineを使用すると速度が向上します。Josh3736は、Jade は遅く、空白が重要であると指摘しています。彼のお気に入りであるdoTを含む、より完全な概要については、こちらを参照してください。(私は個人的に Node.js をベースのアプリケーションにのみ使用しているので、テンプレートに関しては彼が私よりも優れた情報源です)。socket.io
db-mysqlモジュールを使用して Node.js から MySQL に接続できますが、既に存在するシステムに接続されているデータにアクセスしているためにそれが必要ない場合は、もっと... 'モダンなモジュールを使用することをお勧めします。これは、ほとんどの Node.js プロジェクトで行われているように、 NoSQLデータベースを使用することです。Mongoose経由のMongoDBが一般的な方法です。
または、関心のあるオブジェクトを格納するだけの場合は、代わりにRedisを使用してください (いずれにせよ、いずれ必要になるでしょう)。
Web サイトが完成したら、それをデプロイして、確実に実行し続ける必要があります。これを行うには、組み込みのクラスター サポートを使用したり、機能がより使いやすいforever
npm モジュールを使用したりするなど、さまざまな方法があります。詳細については、この SO の私の質問を参照してください。
結論:
私が取得しようとしているのはこれです:
Node.js で Web サイトを構築するためのベスト プラクティスは何かと尋ねることは、PHP で Web サイトを構築するための最良の方法は何かと尋ねることとほぼ同じです。
NPM は、関連する多くのタスクを大幅に簡素化するさまざまな優れたフレームワークに恵まれていますが、どれが実際に進むべきかはすべて好みに基づいています。
前述したように、Node.js はまだかなり新しい技術であるため、フレームワークや追加ツールはまだ「デファクト スタンダード」として登場していません。Node.js 自体とほとんどのモジュールの開発はペースが速いため、更新中にそれらのほとんどを使用すると、コードが壊れることが予想されます。あなたは追いつく必要があります。
すべてをまとめる:
すでに述べたように、Node.js の主な運用用途は を使用できるようにすることなsocket.io
ので、適切な運用例はありません (そして、当然の休暇に出発しようとしているので、 1つをまとめる時間もありません)。ただし、いくつかの良い例があります。
繰り返しになりますが、進むべき道 (およびそれに続く例) は、最終的な目標と選択した手法に大きく依存しますが、幸いなことに、利用可能なすべての選択肢に対して利用できるリソースがたくさんあります。ほとんどのモジュールは、十分に文書化された GitHub リポジトリを使用し、最も人気のあるモジュールと組み合わせた例が含まれています (/examples/
ほとんどのリポジトリに存在すると思われるディレクトリを参照してください)。
幸運を!(そして、私のエラーを修正してくれたJosh3736に感謝します。)