タグ付けされた質問 「javascript」

JavaScript(Javaと混同しないでください)は、クライアント側とサーバー側の両方のスクリプトで使用される、高レベルで動的なマルチパラダイムの弱く型付けされた言語です。ECMAScript、JavaScript、JScriptなどの一般的な実装に関する質問には、このタグを使用します。JSは通常、そのECMA従兄弟であるActionScriptを参照しません。

1
推移的な依存関係によって引き起こされるモジュール依存関係チェーンの悪夢を回避するにはどうすればよいですか?
多くの(ほとんど?)AngularJSの人々は、AngularJSアプリを多くのモジュールに分割することを提唱しているようです。 Brian Fordは彼のブログで、レイヤー(コントローラー、サービスなど)ごとのパッケージ化は「ばかげた」概念であると既に述べているので、ここでは説明しません。(http://briantford.com/blog/huuuuuge-angular-appsを参照してください。) ただし、アプリを機能ごとにモジュール化するとします。おそらく、これらの機能モジュールをロードするための標準のappモジュールに加えて、usersモジュールとmessagesモジュールがあります。ユーザー機能に関連するルートをユーザーモジュールに、メッセージ関連のルートをメッセージモジュールに慎重に配置します。今、私の心の中で、あなたはngRouteの各機能モジュールに依存関係を作成しました。したがって、各モジュールは、依存関係の配列に「ngRoute」をリストする必要がありますよね? 残念ながら、AngularJSはそれを台無しにすることを非常に簡単にします。あなたの場合はアプリのモジュールがロードの両方のユーザーとメッセージが、唯一のユーザーのリストを依存関係として「ngRoute」、それは実行時に問題ではない:$ routeProviderはまだで、あなたの設定機能の中に注入されるメッセージの本質的により解決された、ユーザーのモジュールのngRouteへの依存。 私の問題は、さまざまな機能モジュールをロード/参照する「アプリ」モジュールの一般的なパターンにある可能性があります。推移的な依存関係と同様に、このパターンは私にとって意味があります。問題なのは、Angularの特定の実装が、モジュールがそのモジュールの依存関係を間接的に参照しない場合をマスクできることです。モジュールは特定のアプリのコンテキストで機能する可能性があります(モジュールが別の「アプリ」モジュールによって参照されており、その依存関係も直接または間接的に参照されているため)。ただし、モジュールを別のアプリにコピーすると、失敗します。依存関係がないため。 ほとんどの人は、usersモジュールが基本的にmessagesモジュールの依存関係になっているという事実をあまり考慮しないだろうという印象を受けます。しかし、それは私が過去を見るのに苦労している問題です。私にとって、機能モジュール間にこれらの混乱する依存関係を作成する可能性がある場合、それはモジュール化の正味の利点を実際に減少させ、アプリのすべての機能のすべてのコンポーネントをカプセル化する単一のアプリモジュールを用意するだけです。

2
カレー機能の実際の使用例は?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 カレー機能の実際の使用例を見つけ、カレーを使用するメリットを得るのに苦労しました。 カレー機能をググると、次のような例がよく見られます let add = x => y => x + y; let add10 = add(10); console.log(add10(20)); この例ではカレーを使用することの価値が本当にわからないのです。 このSO /programming/113780/javascript-curry-what-are-the-practical-applicationsの回答を読んだ後でも、それを使用する利点がわかりません。 たとえば、最高得点の回答はコンバーターの例ですが、別の回答が示すように、その例はカレーなしで書き直すことができます。 私も答えを読みますカレーの利点は何ですか?(議論はjavascriptに限定されていませんが)カリーバージョンはjsで)カリーなしで書き直すことができるという感覚を私はまだ得ています。 それで、誰かが私にJavaScriptでカレーを使用することの「本当の」利点/利点を示すことができますか? ----更新---- 私が得た答えを除いて、私はここでログの例を見つけ、それを使用する利点を示しています。

4
イベントを使用した分離コンポーネント間の通信
相互に作用する小さな(> 50)小さなWebComponentsがたくさんあるWebアプリがあります。 すべてを切り離しておくために、原則として、どのコンポーネントも別のコンポーネントを直接参照できないようにしています。代わりに、コンポーネントはイベントを発生させ、(「メイン」アプリ内で)配線されて、別のコンポーネントのメソッドを呼び出します。 時間が経つにつれ、追加されるコンポーネントが増え、「メイン」のアプリファイルには次のようなコードチャンクが散らばっています。 buttonsToolbar.addEventListener('request-toggle-contact-form-modal', () => { contactForm.toggle() }) buttonsToolbar.addEventListener('request-toggle-bug-reporter-modal', () => { bugReporter.toggle() }) // ... etc これを改善するために、同様の機能をグループ化し、にClass関連性のある名前を付け、インスタンス化するときに参加要素を渡し、内の「配線」を次のClassように処理します。 class Contact { constructor(contactForm, bugReporter, buttonsToolbar) { this.contactForm = contactForm this.bugReporterForm = bugReporterForm this.buttonsToolbar = buttonsToolbar this.buttonsToolbar .addEventListener('request-toggle-contact-form-modal', () => { this.toggleContactForm() }) this.buttonsToolbar .addEventListener('request-toggle-bug-reporter-modal', () => { this.toggleBugReporterForm() }) …


1
なぜグローバルっぽいObject.create関数を作成するのですか?
私は.NETとJavaの分野でかなり経験豊富なプログラマーであり、JavaScriptについて読み始めました。Douglas Crockfordの "The Good Parts"の本を購入しましたが、すぐにいくつかのことが気になりませんでした。 1つは、必要のない基本的な型を変更することです。 if (typeof Object.create !== 'function') { Object.create = function (o) { //Really... 'o'? For a parameter you're only using twice? function F() {} F.prototype = o; return new F(); }; } newObject = Object.create(oldObject); 明らかにこの目的で関数を作成すると便利で時間を節約できますが、なぜ地球上でオブジェクト上に作成することを勧めているのですか?3呼吸前に彼はグローバルが悪であることを支持し、それから彼はモンキーパッチオブジェクトに進みました。彼はそれがすでに存在するかどうかさえテストし、他のライブラリが彼のためにそれを行った場合の実装は同じであると仮定します。 名前空間に相当するJSでこれを作成しない理由はありますか?すなわち MY_UNIQUE_UTIL_LIBRARY.create = function(obj){...}; //The name would be shorter …

1
Webアプリケーションをクライアント側のみにしない理由はありますか?
私は最近、パスファインディングアルゴリズムシミュレーションアプリケーションをPythonで書き始めました。 ユーザー入力を受け取り、ランダムに2Dグラフを生成し、GUIを介してシミュレーションを表示します。 さて、私が見つけたのは、Pythonやスタンドアロンアプリケーションは、この種のアプリケーションの共有にはあまり適切ではないということです。これは、人々に自分のコンピューターなどで実行させる必要があるためです。それらをウェブサイトに。 明らかに、表示要素と制御要素はクライアント側で記述する必要があります。 ただし、実際のパス検索アルゴリズムは、クライアント側またはサーバー側のいずれかで作成できます。 これで、サーバー側のバックエンドが必要ない(つまりデータベースがない)場合、Webアプリケーション全体をクライアント側のHTML / JavaScriptで実行することが可能になります。 問題は、これを行わない正当な理由があるかどうかです。 クライアントとサーバー間のやり取りを処理する必要がないため、クライアント側でのみ実行すると、複雑さが大幅に軽減されます。サーバーの唯一の目的は、最初にJavascriptをクライアントに提供することです。 一方、私はすべてをJavaScriptで記述する必要があります... また、再利用可能なモデルモジュールを使用するという考えは、私にとって魅力的です。例えば。後でスタンドアロンアプリケーションが必要な場合は、View / Controlモジュールを記述するだけで済みます。 ここで一般的に受け入れられている慣習は何でしょうか。

1
JSにコンパイルされた言語–同期式の待機を行う最もエレガントな方法
JavaScriptにコンパイルする(まだ別の)言語を作成しようとしています。私が持たせたい機能の1つは、JavaScriptの非同期操作を同期的に(正確には同期ではなく、もちろんメインスレッドをブロックせずに)実行できることです。より少ない話、より多くの例: /* These two snippets should do exactly the same thing */ // the js way var url = 'file.txt'; fetch(url) .then(function (data) { data = "(" + data + ")"; return sendToServer(data); }).then(function (response) { console.log(response); }); // synchronous-like way var url = 'file.txt'; var response = sendToServer("(" + …

2
JavaScriptの文字列定数のベストプラクティス/理由[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 Java / C#のような静的言語では、コードに単独で挿入するのではなく、文字列または数値に定数を使用します。ただし、私はJavaScriptでのこの習慣を避ける傾向があります。最近では、私の周りの他の一部のコーダーがJSでこのアプローチを採用しているため、私またはおそらく彼らの推論を固める必要があると判断しました。 JavaScriptには、実際の「const」宣言構文はありません。通常は、大文字のプロパティを変更しないという非公式のポリシーで解決します。しかし、私の意見は通常、それらを完全に回避することです。それらの利点のほとんどはJavaScriptで失われるためです。Javaでは、ミススペル文字列が原因でプログラムを実行しようとしたときにプログラムが失敗します。その時点でプログラムを修正して次に進みます。両方のインスタンスが同じ定数を指している静的チェッカーを使用すると、コンパイル時に見つけることができるので、その問題を排除できます。あなたは常にあなたのスペルの正しさを発見しようとしているようしかし、JavaScriptは単純に、あらゆる場所にその問題を持っています実行時に: Library = { doThing: function() } setTimeout(function() Liberry.doThing() // No such object: Liberry }, 0); これに対する最善の安全策は、通常、「厳密な使用」です。それを好む開発者にとって、宣言されていない変数の問題をより迅速に見つけるためにそれを使用することに問題はありません。しかし、私の意見では、REST APIなどに文字列定数を提供しても、実際には何も保護されていません。もう一つの例: CompanyAPI.constants.ENROLL_URL = "/rest/enroll"; CompanyAPI.constants.FIRST_NAME = "firstName"; ajax({url: CompanyAPI.constants.ENROLL_URL, data: CompanyAPI.constants.FIRST_NAME }); // vs. ajax({url: "/rest/enroll", data: "firstName" }); ...あなたは上記を書くつもりでしたが、次にタイプミスをしました。おっと。 ajax({url: CompanyAPI.constants.ENROL_URL, data: CompanyAPI.constants.FIRS_NAME }); // vs. …

1
使用するテストフレームワークを決定するにはどうすればよいですか?
状況はこれです。 私は小さな政府ITプロジェクトのジュニア開発者です。継続的な統合や自動テストフレームワークはありません。しかし、アイデアはこの種のものを開発すること/私たちの開発環境を改善することです。 この製品はデータ処理アルゴリズムであり、Webアプリケーションを介してエンドユーザーに情報を表示します。 そのため、WebアプリケーションのJavaScriptを変更する作業がたくさんあります。そのため、JavaScriptの単体テストを実装したいと考えています。 このスタックオーバーフローの質問を見て、javascriptのいくつかの異なるユニットテストフレームワークの概要を説明しました。 問題は、どのフレームワークを使い始めるかをどのように決めるのですか? テストフレームワークを選択するための基準のリストは何ですか? それらをすべて試すのは現実的ですか? フォーラムなどの使用方法について、フォーラムなどをよく読んでください。

2
Javascriptでのドメインモデルの実践(フレームワークを使用)
これは私がしばらく行ったり来たりして検索して何も見つかりませんでした質問です:バックボーンのようなフレームワークを使用しているときに、Webアプリケーション用のJavascriptでドメインモデルを複製することに関して受け入れられているプラ​​クティスは何ですか?またはノックアウト? サーバー側に一連のドメインモデルを持つ重要なサイズのWebアプリケーションがある場合、これらのモデルをWebアプリケーションに複製する必要がありますか(下部の例を参照)。または、動的な性質を使用してこれらのモデルをサーバーからロードする必要がありますか? 私の考えでは、モデルを複製するための議論は、フィールドの検証を容易にし、存在すると予想されるフィールドが実際に存在することを保証することなどです。私のアプローチは、クライアント側のコードをほとんど別のアプリケーションのように扱い、些細なことをすることですそれ自体、データと複雑な操作(クライアント側にはないデータを必要とする)をサーバーに依存しています。クライアント側のコードをこのように扱うことは、ORMのエンティティとUIレイヤーのビューで使用されるモデルを分離することに似ていると思います。それらは同じフィールドを持ち、同じドメインの概念に関連しているかもしれませんが、それらは別個です事。 一方、サーバー側でこれらのモデルを複製することは、DRYの明らかな違反であり、クライアント側とサーバー側で異なる結果をもたらす可能性があるように思えます(一方が更新されても、もう一方は更新されません) )。このDRYの違反を回避するには、JavaScriptのダイナミズムを使用して、必要なときにサーバーからフィールド名とデータを取得します。 それで、これらの状況で自分自身をいつ繰り返すか(そうでない場合)について、認められたガイドラインはありますか?または、これはプロジェクトと開発者に基づいた純粋に主観的なものですか? 例 サーバー側モデル class M { int A DateTime B int C int D = (A*C) double SomeComplexCalculation = ServiceLayer.Call(); } クライアント側モデル function M(){ this.A = ko.observable(); this.B = ko.observable(); this.C = ko.observable(); this.D = function() { return A() * C(); } this.SomeComplexCalculation = ko.observalbe(); …

3
特定の値のセットの実装と、高度なチェックを備えたある種の汎用セットの使用
現在、JavaScriptのセット実装に取り​​組んでいます。これは、JavaまたはC#から知られているジェネリックをシミュレートする必要があります。その可変バージョン(設定値の追加/削除が可能)と不変バージョンが必要です。 私のコンストラクターの署名は次のようになります。 new GenericSet( 'number', [ 10, 20, 30 ] ); 、 // mutable set of mixed values (allows to add further values via "add") new MutableGenericSet( '*', [ 'foo', 42, {}, /./ ] ); または // DataValues.prototype.equals will be used by the set for determining equality. new GenericSet( { …

1
Node.jsアプリのプライベートモジュール。それらをどこに置くか?
状況は次のとおりです。 Node.js開発環境でP1とP2の2つのプロジェクトを開発しています。 P1では、2つの単純なモジュール、mod1とmod2の開発が必要でしたP1/lib。これらはに保存されています。このモジュールの解決はそれぞれ、外部の依存関係をで見つけます P1/node_modules。P1に必要な依存関係は、npmを介してこのフォルダーにインストールされています。 他のプロジェクトP2でmod1を再利用したい画像ですが、ここで私の疑問が浮かび上がりました。私はできた... mod1をにコピーするだけP2/libです。レプリケーションなので、このオプションは考慮していません。 P2から、P1からmod1を参照しますrequire($PROJECTS_DIR + '/P1/lib/mod1')。この方法では、P2はP1に依存します。 mod1を上位レベルのディレクトリに配置するか、NODE_PATHを使用して、P1とP2がdointだけで解決できるようにしrequire('mod1')ます。ただし、展開するときは、少し汚いように見えるこの上位レベルのディレクトリも展開する必要があります。 mod1をnpmモジュールとして扱い、どのプロジェクトや環境にも簡単にインストールできるようにしたいのですが、この特定のケースでは、モジュールをnpmに公開できないので、プロジェクト固有のものです。プライベートnpmリポジトリを作成してmod1を中に入れることができます。これの要点は、本番環境からもアクセスできるように設定することです。その価値はありますか? それをすべてまとめてnode_modulesどうですか?(外部の依存関係と自分のライブラリ)。`require( 'module')のようにモジュールが必要なだけなので、それは素晴らしいことです。しかし、それもかなり汚いようです。 npm link展開時にどのように機能するかわかりません。シンボリックリンクを作成します。GitまたはSVNを介してコードをコミットする場合は、このリンクはたどられません。npm install本番環境で実行すると、リンクされたモジュールもインストールされますか? 上記のどれも私を完全に満足させません。これらの1つが適切かどうか、または他の提案があるかどうかはわかりませんが、他のプロジェクトで簡単に再利用できるように、独自のプライベートライブラリを構築するための好ましい方法はありますか?

1
JavaScriptオブジェクトとCrockfordのThe Good Parts
最近、JSでOOPを実行する方法についてかなり考えています。特に、カプセル化と継承に関してはそうです。 Crockfordによれば、classicalはnew()により有害であり、prototypeとclassicの両方が制限されています。これらのコンストラクターの使用は、カプセル化にクロージャーを使用できないことを意味します。 最近、私はカプセル化について次の2つの点を検討しました。 カプセル化するとパフォーマンスが低下します。各オブジェクトのメソッドには異なるクロージャーがあるため(各オブジェクトには異なるプライベートメンバーがあるため)、プロトタイプではなく各メンバーオブジェクトに関数を追加できます。 カプセル化によって、醜い「var that = this」の回避策が強制され、プライベートヘルパー関数が接続されているインスタンスにアクセスできるようになります。それか、毎回privateFunction.apply(this)でそれらを呼び出すようにしてください。 私が言及した2つの問題のいずれかの回避策はありますか?そうでない場合でも、カプセル化はそれだけの価値があると考えていますか? 補足:Crockfordが説明する機能パターンでは、new()とconstructor.prototypeの使用を完全に忘れているため、パブリックメンバーにのみ触れるパブリックメソッドを追加することもできません。古典的な継承とnew()を使用するだけでなく、Super.apply(this、arguments)を呼び出してプライベートメンバーと特権付きメソッドを初期化するハイブリッドアプローチは優れていますか?

4
JavaScriptがスパゲッティコードになるのを防ぐ方法は?
私は何年にもわたって多くのJavaScriptを実行してきましたが、特にモジュールパターンを使用して、よりオブジェクト指向のアプローチを使用しています。より大きなコードベースがスパゲッティになることを避けるために、どのようなアプローチを使用しますか?「最善のアプローチ」はありますか?

3
プロトタイプベースのOOPの基本を理解するための簡単なJavascriptコード[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 私はしばらくJavaScriptを知っていますが、私はヘビーユーザーではありませんが、ネットスケープが私のブラウザだった頃から初めて知っていました。私は主なことをほとんど理解していますが、JavaScriptによるOOPへのアプローチは典型的なものであるため、把握するのに問題があります。 これに追加する1つの問題は、物事は複数の方法で行うことができるようです。ここでは、すべての例をテーブルに載せているため、本があまり役に立たないところです。 最初に必要なのはそれを行う唯一の方法です。もし誰かがプロトタイプのOOPモデルがどのように機能するかを見ることができる例の最も単純なコードで私を助けることができるなら? 役立つために、コードは継承されたオブジェクトを持ち、親のプロパティとその継承されたプロパティと親の関数にアクセスし、親の関数を上書きし、オブジェクトが他の2つのオブジェクトを継承する多重継承のインスタンスを持つ必要があります。

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