2012-06-28 4 views
5

私はNode.jsでわずか2週間しか開発していませんでした。以前はPHPで書かれたWebサイトの再作成を開始しました。これまでのところとてもうまくいっていて、Nodeで同じことをすることができます(Expressで)。一般的な開発上の問題、落とし穴、および提案は何ですか?

など

私はあなただけのモジュールを使用してこのようなものに慣れなければならないものに走ってきた、共通の環境を共有し、ファイルシステムのためのコールバックを使用しての習慣になっていないモジュール、およびデータベース操作

しかし、そこにあります開発者が後で発見するかもしれないものは、ノードでの開発にとって非常に重要です。ノードで開発している他のすべての人には問題はありますが、後で表示される問題はありませんか?落とし穴?プロが知っていることや、ノブを持っていないことは何ですか?

私は何か提案とアドバイスをいただきありがとうございます。ここで

+0

最初のこと:この質問はStackOverflowには適していません。第二に、一般に言語**はほとんど決して問題ではありません。アイデアは、システムのアーキテクチャ**はほとんど常に**問題です。 – freakish

+0

@freakishはい言語がアプリケーションニーズに合わない場合は、言語が問題になることがあります。そのため、AssemblerでWebサイトをプログラムするつもりはないでしょう。 –

答えて

19

はあなたが後になるまで実現しない可能性がありますものです:

  • ノードは、最終的に/定期的にガベージコレクタを実行するために実行を一時停止します。これが起こると、あなたのサーバーはしゃっくりのために一時停止します。ほとんどの人にとって、この問題は大きな問題ではありませんが、近いうちにシステムを構築する上で障壁となります。 Does Node.js scalability suffer because of garbage collection when under high load?
  • ノードは単一プロセスなので、デフォルトでは1つのCPUしか使用されません。複数のプロセス(通常CPUあたり1つ)を実行する組み込みのクラスタリングサポートがあり、ほとんどの場合、ノードコミュニティはこれが堅実なアプローチであると考えています。あなたはこの現実に驚くかもしれません。
  • スタックトレースは、多くの場合、イベントキューのために失われているので、あなたのロギングとデバッグの方法論は、ここで

あなたはしばらくの間に遭遇するかもしれないいくつかのマイナーなつまずきブロックである有意に(私はまだこれらに対してつり上げる変更する必要があります)

  • 成功したコールバックでcallback(null, value)を覚えています。最初のパラメータとしてnullを渡すことは奇妙なので、私はそれを行うことを忘れてしまいます。代わりに、私は間違いなくcallback(value)を実行します。これは、しばらくの間デバッグして額を叩くまで、呼び出し元によってエラーとして解釈されます。
  • returnを忘れた場合は、ガード句でコールバックを呼び出しても、関数がそのポイントを超えて実行し続けることは望ましくありません。場合によっては、コールバックが2回呼び出されることがあります。これは、すべての不正行為を引き起こします。ここで

あなたはロード3ネットワークのような複雑な操作を行うには、素晴らしいフロー制御ライブラリのいずれかを使用して、それは、Node.jsの中にはるかに簡単である

  • 最初に気づいていないかもしれないいくつかのNICEものです2つのDB呼び出しを並行して行い、次に2つのログファイルに並列に書き込み、次にHTTP応答を送信します。このようなものはノードでは些細で美しいものですが、多くの同期環境では不可能に近いものです。
  • ノードのすべてのモジュールは新しく近代的で、ほとんどの場合、必要な機能を備えた素晴らしいAPIを備えた美しく設計されたモジュールを見つけることができます。 Pythonは今でも素晴らしいライブラリを持っていますが、NodeのcheerioやjsdomモジュールとPythonのBeautifulSoupを比較して、私の言いたいことを見てください。 Pythonのrequestsモジュールとノードのsuperagentを比較してください。
  • 近代的なWeb開発に焦点を当てた現代的なプラットフォームで働くことで、コミュニティの利益がもたらされます。ノードコミュニティとPHPコミュニティとの間の対比は、誇張することはできません。
+0

答えをありがとう! –

関連する問題