5

私は Node.js で開発を始めて 2 週間しか経っていませんが、以前は PHP で作成された Web サイトを再作成し始めました。これまでのところ、PHP で行ったのと同じことを Node (Express を使用) で同じかそれより短い時間で実行できるようです。

モジュールの使用、共通の環境を共有しないモジュール、ファイルシステムやデータベース操作にコールバックを使用する習慣など、慣れる必要があることに遭遇しました。

しかし、ノードでの開発にとって非常に重要で、開発者が後で発見する可能性のあるものはありますか? Node で開発している他のすべての人が抱えている問題ですが、後になるまで表面化しませんか? 落とし穴?プロが知っていて初心者が知らないことはありますか?

提案やアドバイスをいただければ幸いです。

4

1 に答える 1

19

以下は、後になって初めて気付く可能性のある事項です。

  • ノードは実行を一時停止して、最終的に/定期的にガベージ コレクターを実行します。これが発生すると、サーバーは一時停止します。ほとんどの人にとって、この問題は重大な問題ではありませんが、ニアタイム システムを構築する際の障害になる可能性があります。高負荷時のガベージ コレクションが原因で、Node.js のスケーラビリティが低下しますか?を参照してください。
  • ノードは単一プロセスであるため、デフォルトでは 1 つの CPU のみを使用します。複数のプロセス (通常は CPU ごとに 1 つ) を実行する組み込みのクラスタリング サポートがあり、ほとんどの場合、Node コミュニティはこれが堅実なアプローチであると考えています。しかし、この現実に驚くかもしれません。
  • イベント キューが原因でスタック トレースが失われることが多いため、ロギングとデバッグの方法を大幅に変更する必要があります。

ここでは、しばらくの間遭遇する可能性のある小さな障害をいくつか示します (私はまだこれらにぶつかっています)。

  • callback(null, value)成功したコールバックで行うことを忘れないでください。最初のパラメーターとして null を渡すのは変なので、忘れてしまいます。代わりにcallback(value)、誤って .
  • ガード句でコールバックを呼び出すときに使用するのを忘れてreturnおり、関数がその時点を超えて実行し続けたくない場合。これにより、コールバックが 2 回呼び出される場合があり、あらゆる種類の誤動作が発生します。

最初は気づかないかもしれないいくつかの素晴らしいことを次に示します

  • node.js では、優れたフロー制御ライブラリの 1 つを使用して、3 つのネットワーク リソースを並行してロードし、次に 2 つの DB 呼び出しを連続して実行し、次に 2 つのログ ファイルに並行して書き込み、その後、 HTTP 応答。このようなことはノードでは簡単で美しく、多くの同期環境ではほぼ不可能です。
  • ノードのモジュールはすべて新しく最新のものであり、ほとんどの場合、必要なことを実行するための優れた API を備えた美しく設計されたモジュールを見つけることができます。Python にも今では優れたライブラリがありますが、Node の Cheerio または jsdom モジュールを Python の BeautifulSoup と比較して、私が何を意味するかを見てください。python のrequestsモジュールとノードのsuperagent.
  • 人々が最新の Web 開発に集中している最新のプラットフォームで作業することで、コミュニティに利益がもたらされます。ノード コミュニティと PHP コミュニティの違いは、いくら強調してもしすぎることはありません。
于 2012-06-28T15:53:49.867 に答える