web-dev-qa-db-ja.com

Node.jsを使用してWebサイトを構築するベストプラクティス

Node.jsを使用してゼロからWebサイトを開発するにはどうすればよいのかと思っていました。私はおそらくそれを行うことができる方法を理解していますが、ベストデザインプラクティスに興味があります。

私はこの理論的なウェブサイトが必要です:

  1. 多くのAJAXを実行する
  2. とても率直に
  3. 比較的小さい
  4. 接続先... MySQLサーバーの場合

PHPでは、非常に小さなWebサイトの構築は非常に簡単でした。ApacheとMySQLサーバーでPHPをセットアップしてから、次のようなことを行います。

  • includes/db/には、dbに接続するためのconnect.php、一般的なdb関連機能を含むファイルなどがあります
  • includes/layout/ footer.php、header.php、およびその他のレイアウト関連のものがありました
  • includes/users/はユーザー関連のアクションを処理します

次にPHPを使用してページを構築し、これらのファイルを一緒に含めてWebサイトを作成します。

<?php
   require_once('inclues/users/user_session.php');
   require_once('inclues/db/connect.php');
   require_once('inclues/design/header.php')
?>

// Other php or html or related content relating to the page

<?php
   require_once('inclues/.../footer.php');
?>

Node.jsで何が似ているのだろうと思っていました-simplefast、およびstraightforwardとしてこれを達成する方法を探していますできるだけ。

答えが簡単ではない場合、私は本の推薦が大好きです、私は読書を気にしません。

イベントベースのプログラミングが大好きで、JavaScriptの機能が大好きで、Node.jsにとても興奮しています。私はこの種のものを最初から正しい方法で開発する方法を学びたいです。

79

悪いニュースから始めましょう: Node.js はかなり若いテクニックであるため、本格的なWebサイトを作成し、それを維持/運用するプロセスは非常に重要であると思います。現在使用しているものとは異なります。

Josh3736 が追加します:Node.jsとそのさまざまなパッケージ(Connect、Express)がどのように機能するかを理解したら、新しいサイトを非常に迅速に開発できることがわかりました。

Node.jsに現在存在するラフなエッジは、その開発のペースと関連するすべてのモジュールと相まって、物事を複雑にする可能性があり、物事をあなたが望むよりも単純で、速く、簡単ではありません。

邪魔にならないように、ここに朗報があります。

Node Package Manager、NPM には、Node.jsの基本機能を拡張するための優れたツールとフレームワークが多数あり、Webサーバーの作成に適しています。

最も顕著なのは Express Framework で、これにはWebサーバーを実行するために必要なほぼすべて(Cookie、セッション、パスルーティングを含む)が含まれます。さらに、Expressはパーシャルをサポートします。パーシャルはヘッダーとフッターのインクルードを処理します。

Expressは、 SenchaのConnect の上に構築されています。 Cookieとセッションは、実際にはConnectによって強化されています。 Expressはルーティングを簡素化し、ビュー/部分を処理するものです。そのため、Expressに付属するすべての機能が必要ない場合は、代わりにConnectを使用できます。

これらのパーシャルにテンプレートを使用する場合、 Jade Template Engine を使用すると速度が向上します。ただし、 Josh3736 は、Jadeが低速で空白が重要であることを指摘しています。より完全な概要は here にあります。これには彼のお気に入り doT が含まれています。 (私は個人的に socket.io ベースのアプリケーションにのみNode.jsを使用しているので、テンプレートに関しては彼は私よりも優れたソースです)。

あなたはcandb-mysql モジュールを使用してNode.jsからMySQLに接続できますが、必要ない場合はすでに存在するシステムに接続されたデータにアクセスするには、もっと...「モダン」アプローチを使用することをお勧めします。これは、ほとんどのNode.jsプロジェクトのように NoSQL データベースを使用することです行う。 MongoDB via Mongoose が人気のある方法です。

または、目的のオブジェクトを保存するだけの場合は、代わりに Redis を選択します(おそらく、いずれにせよ必要になるでしょう)。

Webサイトが完成したら、それを展開し、実行し続けることを確認する必要があります。組み込みのクラスターサポートを使用したり、より機能に優しい forever npmモジュールを使用するなど、その方法は多数あります。 詳細については、このSO質問を参照してください。

結論

私が取得しようとしているのはこれです:

Node.jsでWebサイトを構築するためのベストプラクティスを尋ねるのは、PHPでWebサイトを構築する最良の方法は何であるかを尋ねるのと同じです。100人の開発者が100の答えを出します。

NPMは、関連する多くのタスクを大幅に簡素化するさまざまな優れたフレームワークに恵まれていますが、どれが実際に進むべきかは好みに基づいています。

前述したように、Node.jsはまだかなり新しい技術であるため、「事実上の標準」として登場したフレームワークや追加ツールはまだありません。 Node.js自体とほとんどのモジュールの開発はペースが速いため、あなたがやろうとしているほとんどのことについて、おそらくさまざまな選択肢があり、更新中にそれらのほとんどを使用するとコードが壊れることが予想されます。あなたは追いつく必要があります。

すべてをまとめて

先ほど言ったように、Node.jsの本番環境での主な使用法は socket.io を使用できるようにすることなので、良い実例はありません(そして、当然の休暇を残すために、私は休暇を一緒にする時間もありません)。ただし、いくつかの良い例があります。

繰り返しますが、進むべき方法(およびその後の例)は、最終的な目標と選択した手法によって大きく異なりますが、幸いなことに、利用可能なすべての選択肢に十分なリソースがあります。ほとんどのモジュールは、よく文書化されたGitHubリポジトリを使用し、最も人気のあるモジュールと組み合わせて例を含んでいます(ほとんどのリポジトリにあると思われる/examples/ dirを参照)。

幸運を! (そして、エラーを修正してくれた Josh3736 に感謝します。)

185
Rem.co