タグ付けされた質問 「node.js」

Node.jsは、GoogleのV8 JavaScriptエンジンを使用するイベントベースの非同期I / Oフレームワークです。

1
本当に同期したいときに非同期関数を処理する方法
私はNodeJSが初めてであり、同期呼び出しで1つの呼び出しを他の呼び出しに追従させたいときに、関数の非同期性に頭を悩ませるのに苦労しています。 たとえば、Webサービスメソッドを呼び出しているとします。すべてのメソッドにはコールバック関数があります。しかし、特定の順序で10個を呼び出したい場合はどうすればよいでしょうか?最初のコールバックですべての関数を本当にチェーン/埋め込みする必要がありますか?チェーンが2回目にわずかに異なる場合はどうなりますか? 実際に同期したい状況に対処するエレガントなパターンはありますか? それとも、この種のプログラミングを別の考え方に慣れさせるべきでしょうか?もしそれが本当なら、誰かがコールバックを使用した関数の長いチェーンのきれいな例を私に指摘するかもしれません...
16 node.js 

5
遅延コールバックとは何ですか?
関数を別の関数に渡し、その関数が提供された関数を自由に使用するコールバックのアイデアを理解しています。 グーグルした後でも、遅延コールバックを理解するのに苦労しています。 誰か簡単な説明をお願いできますか?私はRubyでプログラミングしますが、C / C ++も少し知っていますが、何よりも私は経験豊富なアセンブリ言語プログラマーでした。だから私はそれがポップされるコールバックアドレスのスタックに少し似ているのだろうか?私はjqueryまたはnode.jsを学びたいと思っており、これらの遅延コールバックは両方に不可欠のようです。基本的なスレッドの原理を理解しています(ただし、mutexオブジェクトは頭を痛めます;)
15 jquery  node.js 

1
NodeJSはどのようにして「ノンブロッキング」にできますか?
私はNodeJSを学んでおり、何かを明確にしたかっただけです。これまでのいくつかの入門チュートリアルと本では、非常に早い段階でNodeの「ノンブロッキング」アーキテクチャについて説明しました。 したがって、たとえば、この例は、データベースからデータを取得する非同期的な方法を読んでいる本で提供されました。 http.createServer(function (req, res) { database.getInformation(function (data) { res.writeHead(200); res.end(data); }); }); (私が理解しているように)起こることは、Nodeがデータベースへの呼び出しを行い、次に呼び出しスタックの次のものを処理し続けることです。データベースリクエストが完了すると、匿名コールバック関数のデータ変数が設定され、その関数がコールスタックに追加されます(その後、ノードがそれに到達したときに実行されます)。 私の質問は、データベース要求を正確に処理しているのは何ですか?確かにNodeはブロックしなければなりませんか?データベース要求を処理しているのは何ですか?または、Nodeが外部リソースへの非同期HTTP GETリクエストを待機している場合、Nodeがコールスタックの処理を継続して「非ブロッキング」になることを可能にするリクエストを処理しているのは何ですか?

3
関数型プログラミングで管理可能なコードを書く方法は?
私は関数型プログラミング(JavaScriptとNode.jsを使用)を開始しましたが、見た目からは、作成しているコードは、オブジェクト指向のパラダイムの一種。 OOPを使用すると、コードを簡単に管理し、拡張可能にするためのプラクティスに精通しています。しかし、関数型プログラミングでも同様の慣習があるのは確かです。

3
ユーザーがブラウザでコードを編集できないようにするにはどうすればよいですか?
説明 Node.JSアプリケーションを設計しています(完全なWebサイトのようなものです)。アプリは5つのJavaScriptファイルを送信<script>し、それらをリンクするタグを持ちます。 質問 ユーザーと攻撃者がコードをピアリングおよび編集するのを防ぐにはどうすればよいですか? 例は次のとおりです。 Ctrl+ Shift+I ではデベロッパーツール、後藤ソース、(つまり編集するファイルを選択index.html)と書き込み編集 Ctrl+ Sを押すと、ライブ編集が行われます 上記の例が発生しないようにしたい...可能ですか? ここに私が考えたことがあります: 別のクライアント側JavaScriptファイルprevent_keys.jsを作成します Ctrl+ Shift+ をリッスンしIます。 戻るtrue(つまり、キーが押された)場合log、キーになります。 ただし、ユーザーがDevtoolsを直接使用することを停止することはありません。

4
node.jsはバックグラウンド処理に適していますか?
私はゆっくりと学習node.jsしていて、始めたい小さなプロジェクトがあります。プロジェクトには多くのバックグラウンドプロセス(外部サイトからのデータのダウンロード、CSVファイルの解析など)があります。 私とノードにとって大きな「勝利」は、クライアントとサーバーの両方にJavaScriptを使用していることです。私は日々の仕事でJavaとJavaScriptでコーディングしていますが、Rubyもかなり得意です。 しかし、私が言ったように、どこでも1つの言語を使用することは魅力的であり、JSはその法則に適合しているようです。 ただし、私はJSを使用してバックグラウンドジョブを実行する経験があまりありません。Rubyはこれに優れているようです。そして、私はそれを使うことに反対していません。では、これを100%JSにすることについてどう思いますか?非常に大きなプロジェクトにはカスタムソリューションが必要であることに気づきました。努力するだけの価値があるのか​​と思っています。それとも、そのような雑用にはRubyだけを使うべきでしょうか? ご意見をお寄せください。 ありがとう

2
フレームワークやライブラリを必要とせずに、node.jsでコンテンツをどのように提供しますか?
node.jsを学び、webアプリケーションを作成しようとしています。node.jsのみを使用して作成するように最善を尽くしていますが、プロセスを説明するリソースと例を見つけるのが非常に困難です他のフレームワークやライブラリを使用せずに。 具体的には、ハードコーディングされた文字列変数を使用せずに、HTMLおよびCSSコンテンツを提供し、node.jsだけを使用してHTMLおよびCSSファイルを動的に提供するにはどうすればよいですか?
10 node.js 

2
node.jsおよびc#の使用例
私はかなりのASP.NET作業(C#、MVC)を行っていますが、そのほとんどは典型的なWeb開発です。CRUDリポジトリーを使用してRestfulアーキテクチャーを実行します。私のクライアントのほとんどは、アプリケーション内に高度な要件をあまり持っていません。 私は現在node.jsを見ていて、パフォーマンスへの影響(私はスピードに夢中になっています)ですが、それほど深く掘り下げていません。 かしら node.jsは、C#およびASP.NET MVCでの私の典型的なWeb開発を現実的に置き換えることができます(既存のアプリを書き換えるのではなく、新しいアプリで作業する場合) node.jsは、既存のアーキテクチャに非同期機能を追加することで、ASP.NET MVCアプリを補完できます。 C#およびnode.jsのユースケースはありますか? 編集する 私はASP.NET MVCが大好きで、どこに行くのかとても興奮しています。node.jsを支持する特別なユースケースがあるかどうかを確認しようとしています

1
Node.jsまたはサーブレット?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 私はJavascriptサーバー側言語、つまりNode.jsについて多くのことを聞いて読んだり、Nodeを支持する多くの比較を見たりしました。 何がそれを良くしたり速くしたりするのか、あるいはそれがJavaサーブレットのように成熟したものとどのように関係しているのかも理解できません。 ただし、サーブレットは、Node.jsとは対照的に、マルチスレッドのプログラミング言語の上に構築されています。では、node.jsをどのように高速化できますか? 1000Kのユーザーがデータベースレコードをクエリすると仮定すると、Node.jsがサーブレットよりも遅くなることはありません。 また、サーブレットはNode.jsに比べてセキュリティが優れていませんか?

1
Node.jsの依存関係が重すぎる
最近、node.jsで遊んだ。 今、そこにあるすべてのノードのチュートリアルでは、 npm init そして、いくつかの標準的なサーバーフレームワークが必要だとすると、エクスプレスを選択するとします。 npm install express しかし、ASP.NETのような世界から慣れ親しんでいる多くのものが必要になります。 テンプレートエンジン(jade)とスタイルシートプリプロセッサ(SASS)について話します。 そして、彼らはあなたに「gulp / gruntをインストールしてください。そうすれば、サーバーを最小化、醜化して実行することができ、他の多くのものを自動的に実行できます!」 そして、それはgulp、node-sass、gulp-sass、gulp-uglify、そしておそらくもっとクールなもの(tsdまたはbabel、markdownなど)をインストールすることを意味します... しかし、それらすべては重いです、ディスクとプロジェクトます。同じことを問わず、すべてのノードモジュールが独自の依存関係を持っているため、10000以上のファイルは言うまでもなく、そのプロジェクト(まだ開始されていない!)の100 MB以上のディスクサイズで簡単に見つけることができます。依存関係は別のモジュールで使用されています。これは、Webサーバーはもちろんのこと、どこにでも移動するのが非常に困難です。 何か不足していますか?そのような明らかな欠陥が存在する間、ノード環境にそれほどの賞賛が与えられる可能性はないと思います。私が期待していることは多すぎます(結局、一度に多くのツールを使用しようとしたのですが)、ノードのベテランがこれを回避するために取るに足らないことはありますか?

1
ユニットとインテグレーションのギャップのテスト:小型コンポーネントインテグレーションのユニットインテグレーションテスト
過去数週間、私はテスト方法論のギャップを埋める方法を検討し、検討してきました。簡単に言うと、単体テストは小さすぎ、従来の統合テストは大きすぎます。 頻繁にシナリオがアップになるAとB、両方の使用コンポーネントをC。ただしA、のB要件は少し異なり、についての仮定も少し異なりますC。私が開発者である場合A、どこでどのように私の想定をテストするのCですか? 明らかにAモックされた仮定Cを使用Aした単体テストは、単独でのテストには適していますが、仮定自体はテストしません。 別の可能性は、の単体テストを追加することですC。ただし、これはA開発段階ではありますがC、仮定を進化させてテストを変更するのは非常にA不格好なため、これは理想的ではありません。実際、A開発者はC(たとえば、外部ライブラリ)の単体テストに適切にアクセスできない場合もあります。 これをより具体的な例でフレーム化するには:これがノードアプリケーションであると想定します。 AにB依存しC、(特に)ファイルを読み取り、ファイルの内容をに渡されたオブジェクトに格納しますC。最初Cは、処理するすべてのファイルが小さく、重大なブロックなしで同期的に読み取ることができます。ただし、の開発者Bは、自分のファイルが巨大になりC、非同期読み取りに切り替える必要があることを認識しています。これにより、で散発的な同期バグが発生します。Aこれは、Cファイルを同期的に読み取ることを前提としています。 これは、完全な統合テストから追跡するのが非常に難しいことで有名なタイプのバグであり、統合テストではまったく検出されない可能性があります。またA、Asの前提条件がモックされているため、sの単体テストでは捕捉されません。ただし、「」Aおよび「」のみを実行する「ミニ」統合テストで簡単に検出できますC。 このタイプのテストへの参照はわずかしか見つかりませんでした。小型の統合、コンポーネント統合テスト、ユニット統合テスト。また、正式なTDD単体テストではなく、BDDテストの方向性にも関係しています。 このテストギャップをどのように埋めますか?具体的には、そのようなテストはどこに置くのですか?どのように私はの入力あざけりないAとC「ミニ」統合テストのために?そして、これらのテストと単体テストの間でテストの懸念を分離するためにどれだけの努力を払う必要がありますか?または、テストのギャップを埋めるためのより良い方法はありますか?

1
マルチパートフィールド/ファイルデータを個別に解析する方法は?
マルチパートフォームを2回解析する必要があります。1回は入力フィールドを取得し、後でファイルのアップロードを処理します。 私は私のノードアプリ内で懸念の適切な分離を維持しようとしています: コントローラーは、入力フィールドの処理を担当します。 モデルは、ファイルのアップロードロジックを担当します。 新しいインスタンスを作成するためにフィールドデータをモデルに渡す必要があるため、ファイルのアップロードを開始する前にフィールドデータを利用できるようにする必要があります。 現在、すべてform.parse()または同等の関数がフィールドとファイルの両方を一緒に解析しています。例:req.pipe(busboy)ファイルとフィールドの両方を一緒に処理します。 私はnode-multiparty、手ごわい、busboy、multerなどのモジュールをチェックしました。これに対する解決策は誰にもないようです。 私が達成したいものの例はここにあります:https : //stackoverflow.com/questions/22336177/node-js-busboy-parse-fields-and-files-seperatly これは可能ですか?
9 data  node.js  upload 

3
node.jsコールバックピラミッドの処理
私はnodeを使い始めたばかりですが、すぐに気付いたのは、コールバックが愚かなレベルのインデントまでどれだけ速く構築できるかです。 doStuff(arg1, arg2, function(err, result) { doMoreStuff(arg3, arg4, function(err, result) { doEvenMoreStuff(arg5, arg6, function(err, result) { omgHowDidIGetHere(); }); }); }); 公式のスタイルガイドは別の関数内の各コールバックを置くことを言いますが、それは、オブジェクトがすべてを通過する必要があるように、単一のオブジェクトは、利用可能ないくつかの層下にトップレベルで宣言されたクロージャの使用に過度に制限的と思われる、となってい中間コールバック。 ここで助けるために関数スコープを使用しても大丈夫ですか?グローバルっぽいオブジェクトへのアクセスを必要とするすべてのコールバック関数を、そのオブジェクトを宣言する関数の中に置いて、クロージャーに入りますか? function topLevelFunction(globalishObject, callback) { function doMoreStuffImpl(err, result) { doMoreStuff(arg5, arg6, function(err, result) { callback(null, globalishObject); }); } doStuff(arg1, arg2, doMoreStuffImpl); } など、さらにいくつかのレイヤーについて... または、すべてのコールバックごとに名前付き関数を宣言せずにインデントのレベルを下げるのに役立つフレームワークなどはありますか?コールバックピラミッドをどのように扱いますか?

2
ステートフルアプリと非ステートフルアプリ[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 昨年休業。 ステートフルアプリと非ステートフルアプリについて学習してきましたが、このトピックについてはまだ少し混乱しています。 たとえば、ユーザーがsocket.io経由で接続するとすぐにランダムルームに割り当てられるNodeで実行しているアプリがあるとします。これらは4の部屋であり、永続的なものではありませんが、ハッシュマップとしてグローバル変数に格納されます。私はdb(クエリが多すぎる)やredis(高すぎる)を使用していません。 これはステートフルアプリの例ですか?

2
パッケージを最新の状態に保つための優れたNode.jsワークフロー?
私は最近、Node.jsでプロジェクトの開発を始めました。もちろん、現在使用しているパッケージは、新しく開始して最新バージョンを使用しているため、かなり最新の状態ですが、ほとんどのNode.jsパッケージのバージョン回転率がかなり高く、多くの場合、特定の機能は非推奨または削除されました。もちろん、セキュリティの脆弱性は修正されます。 ほとんどのパッケージはセマンティックバージョニング構文を使用して指定されている^1.2.3ため(変更を壊さないように、特定のメジャーバージョン番号を使用)、現在のメジャーバージョン以外の重要な更新は失われます。 依存関係を合理的に最新の状態に保つための賢明な方法は何ですか?たとえば、依存関係の更新を毎週ワークフローにチェックして、遅れをとらないようにする必要がありますか?そして、この理由から、必然的に新しいメジャーバージョンに更新する場合は、依存関係を最小限にして、重大な変更に対処する手間を最小限に抑えることをお勧めしますか?
8 node.js  npm 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.