Node.jsを使ったWebサイト構築のベストプラクティス
質問
Node.jsでゼロからウェブサイトを開発するにはどうしたらいいのかと思っていました。 私はどのようにすれば おそらく しかし、私が興味を持っているのは ベスト デザインプラクティスに興味があります。
この理論的なウェブサイトが必要なのです。
- 多くの AJAX を実行する
- 非常に簡単であること
- 比較的小さいこと
- 接続先...例えばMySQLサーバに接続する。
PHPでは、かなり小さなWebサイトを構築するのはとても簡単でした。Apache上のPHPとMySQLサーバーをセットアップして、次のようなことをしました。
-
includes/db/
には、データベースへの接続用のconnect.php、データベース関連の一般的な関数を含むファイル、などがあります。 -
includes/layout/
footer.php、header.php、および他のレイアウトに関連するものがあるファイルです。 -
includes/users/
は、ユーザー関連のアクションを処理するために
それから、PHPはページを作成し、これらのファイルを一緒にインクルードしてウェブサイトを形成することができます。
<?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で似たようなことができるのではないかと思っていました - 私は次のようなことを達成する方法を探しているのです。 シンプル , 速い そして ストレート を可能な限り実現します。
答えがシンプルでなければ、おすすめの本を教えてほしいです、読書は嫌いではないので。
私はイベントベースのプログラミングが大好きで、JavaScriptの能力が本当に大好きで、Node.jsにとても興奮しています。私はそれを使ってこの種のものを開発する方法を、最初から正しい方法で学びたいのです。
どのように解決するのですか?
まず、悪いニュースから。以下のように Node.js はかなり新しい技術なので、本格的なWebサイトの制作や保守・運用のプロセスは、現在慣れているものとはかなり異なることが分かると思います。
Josh3736 が追加されます。 Node.jsとそのさまざまなパッケージ(Connect、Express)がどのように機能するかを理解すれば、新しいサイトを非常に速く開発できることがわかりました。
Node.jsに現在存在する荒削りな部分と、その開発の速いペースや関係するすべてのモジュールが組み合わさって、物事を複雑にしてしまい、あなたが望むよりもシンプルで速く、わかりやすいものではなくなってしまうかもしれません。
それはさておき、ここに良い知らせがあります。
その ノードパッケージマネージャ、NPM には、Node.js の基本的な機能を拡張するための優れたツールやフレームワークがたくさんあり、Web サーバを作成するのに適しています。
最も顕著なのは エクスプレス フレームワーク は、Web サーバを実行するために必要なほとんどすべてのもの (クッキー、セッション、パスルーティングを含む) を含んでいます。さらに、Express はパーシャルをサポートしており、ヘッダーとフッターのインクルードを処理します。
Express は SenchaのConnect . Cookieとセッションは、実際にはConnectによって提供されています。Expressは、ルーティングを簡素化し、ビューやパーティションを処理するものです。したがって、Expressに付属するすべてのベルとホイッスルが必要でない場合は、代わりにConnectを使用することができます。
これらのパーシャルにテンプレートを使用したい場合は
Jade テンプレート エンジン
はあなたのために物事をスピードアップすることができます。とはいえ
Josh3736
は、Jadeが遅いことと、空白が重要であることを指摘しています。より完全な概観は
をご覧ください。
で、彼のお気に入りが紹介されています。
doT
. (私自身は、Node.js を使って
socket.io
ベースのアプリケーションにしか使わないので、テンプレートに関しては私よりも良いソースです)。
あなたは できる を使用して Node.js から MySQL に接続することができます。 db-mysql モジュールを使ってNode jsからMySQLに接続しますが、すでに存在するシステムに接続されたデータにアクセスするためにそれが必要ない場合は、もっと......近代的なアプローチを使うことをお勧めします。現代的な'アプローチ、それは NoSQL データベースを使用します。 MongoDB を経由して マングース が一般的な方法です。
また、単にオブジェクトを保存するだけなら、単に Redis を使えばいいのです(いずれは必要になるでしょうが)。
ウェブサイトが完成したら、それをデプロイして動作し続けることを確認する必要があります。これを行うには、組み込みのクラスタ サポートを使用したり、より機能的な
forever
npm モジュールを使用します。
詳しくは私のこのSOの質問を参照してください。
結論 :
私が言いたいのは、こういうことです。
Node.jsでウェブサイトを構築するためのベストプラクティスは何かと尋ねることは、PHPでウェブサイトを構築するためのベストな方法は何かと尋ねることとほぼ同じです。100人の開発者が100通りの答えを出すでしょう。
NPMは、関連する多くのタスクを大幅に簡略化するさまざまな優れたフレームワークに恵まれていますが、どれが本当に行くべき道なのかは、すべて好みに基づいているのです。
私が言ったように、Node.js はまだかなり若い技術なので、フレームワークや追加ツールのどれもがまだ「デファクトスタンダード」として出現していません。あなたがしようとしているほとんどのことについては、おそらくさまざまな選択肢があり、更新中にそれらのほとんどを使用するとあなたのコードが壊れることが予想されます。Node.js自体やほとんどのモジュールの開発は速いペースなので、更新中にそれらのほとんどを使用するとコードが壊れることが予想されます。
すべてをまとめる :
これまで述べてきたように、Node.jsの私の主な制作上の用途は
socket.io
を使用できるようにすることです。したがって、私は良い実例を持ちません(そして、私は当然の休暇に出発しようとしているので、それをまとめる時間もありません)。しかし、いくつかの良い例があります。
- 設定 と ExpressとJadeを使用したデプロイメント
- Express、Jade、MongoDBを使用した非常に完成度の高いブログの例
- Restify (Expressの拡張)、Backbone.js、Mongooseを組み合わせた例です。
繰り返しますが、進むべき道 (およびそれに続く例) は、最終的な目標と選択した技術に大きく依存しますが、幸いなことに、利用可能なすべての選択肢について利用可能なリソースがたくさんあります。ほとんどのモジュールは、よく文書化された GitHub リポジトリを使用しており、最も人気のあるモジュールとの組み合わせで例を含んでいます (See the
/examples/
dirはほとんどのリポジトリに存在するようです)。
がんばってください。(そして ジョシュ3736 に感謝します)。
関連
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Node.jsで環境変数を読み込む
-
[解決済み】Node.jsのrequireとES6のimport/exportを使い分ける。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSのDateからDay名
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] ECMAScriptとは?
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
-
[解決済み] JavaScriptデータフォーマット/プリティプリンタ