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

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

2
Javascriptに実際に適用可能なオブジェクト指向の原則はありますか?
Javascriptはプロトタイプベースのオブジェクト指向言語ですが、次のいずれかの方法により、さまざまな方法でクラスベースになります。 自分でクラスとして使用する関数を書く フレームワークで気の利いたクラスシステムを使用する(mootools Class.Classなど) Coffeescriptから生成する 最初はJavascriptでクラスベースのコードを書く傾向があり、それに大きく依存していました。しかし最近、私はJavascriptフレームワークとNodeJSを使用していますが、これらはクラスの概念から離れ、次のようなコードの動的な性質により依存しています。 非同期プログラミング、コールバック/イベントを使用するコードの作成と使用 RequireJSを使用したモジュールのロード(グローバルネームスペースにリークしないようにするため) リスト内包表記(マップ、フィルターなど)などの関数型プログラミングの概念 とりわけ これまでに収集したことは、私が読んだほとんどのオブジェクト指向の原則とパターン(SOLIDやGoFパターンなど)は、SmalltalkやC ++のようなクラスベースのオブジェクト指向言語向けに書かれたものです。しかし、Javascriptなどのプロトタイプベースの言語に適用可能なものはありますか? Javascriptに固有の原則やパターンはありますか?コールバックの地獄、悪の評価、またはその他のアンチパターンなどを避けるための原則

4
多くのソフトウェア開発者がなぜオープン/クローズド原則に違反するのですか?
多くのソフトウェア開発者が、アップグレード後にアプリケーションを破壊する関数の名前を変更するなど、多くのことを変更することにより、オープン/クローズの原則に違反するのはなぜですか? この質問は、Reactライブラリの高速バージョンと継続バージョンの後に私の頭に飛びつきます。 短い期間ごとに、構文、コンポーネント名などに多くの変更があります。 Reactの今後のバージョンの例: 新しい非推奨の警告 最大の変更点は、React.PropTypesとReact.createClassを独自のパッケージに抽出したことです。どちらもメインのReactオブジェクトを介して引き続きアクセスできますが、いずれかを使用すると、開発モードのときに1回限りの非推奨警告がコンソールに記録されます。これにより、将来のコードサイズの最適化が可能になります。 これらの警告は、アプリケーションの動作には影響しません。ただし、特にconsole.errorを失敗として扱うテストフレームワークを使用している場合、フラストレーションが発生する可能性があることを認識しています。 これらの変更はその原則の違反と見なされますか? Reactのようなものの初心者として、ライブラリ内のこれらの高速な変更でどのようにそれを学ぶのですか(とてもイライラします)?

4
JavaScriptは設計によって解釈されますか?
私はこの質問をするのは用心深いです。JavaScript:The Definitive Guideを開いたところ、第1章の最初のページの状態 「JavaScriptは、高レベルで動的な、型付けされていないインタープリタ型プログラミング言語です」 だから、解釈された部分は言語仕様の要件であると解釈するのですか、それとも言語とその多くの実装の違いを尊重するときに言語が解釈されるプログラミング言語であると言うのは誤解を招くのでしょうか? JavaScriptのための静的コンパイラは明らかにありません- https://stackoverflow.com/questions/1118138/is-there-a-native-machine-code-compiler-for-javascriptので、多分それは、このだけの反射です。
73 javascript 


14
動的に型付けされた言語の単一の関数から異なるデータ型を返すのは悪い考えですか?
私の第一言語は静的に型付けされています(Java)。Javaでは、すべてのメソッドから単一の型を返す必要があります。たとえば、条件付きでを返すメソッドStringや、条件付きでを返すメソッドを持つことはできませんInteger。しかし、たとえばJavaScriptでは、これは非常に可能です。 静的に型付けされた言語では、これが悪い考えである理由がわかります。すべてのメソッドが返された場合Object(すべてのクラスが継承する共通の親)、あなたとコンパイラはあなたが何を扱っているのか分かりません。実行時にすべての間違いを発見する必要があります。 しかし、動的に型付けされた言語では、コンパイラーさえ存在しない場合があります。動的に型付けされた言語では、複数の型を返す関数が悪い考えである理由は私には明らかではありません。静的言語の私のバックグラウンドにより、このような関数を書くことは避けられますが、コードを見えないようにすっきりさせることができる機能については気にされているのではないかと心配しています。 編集:私の例を削除します(より良い例を考えることができるまで)。私がやろうとしているのではない点に返信するように人々を誘導していると思います。

4
JSFを使用しない理由[非公開]
StackExchangeは初めてですが、あなたが私を助けることができると思いました。 レガシーJSPソリューションを置き換える新しいJava Enterpriseアプリケーションを作成しています。多くの変更により、UIとビジネスロジックの一部は完全に再考され、再実装されます。 Java EEの標準であるJSFが最初に考えられました。最初は良い印象がありました。しかし今、私は機能的なプロトタイプを実装しようとしていますが、それを使用することに関して本当に深刻な懸念があります。 まず第一に、それは私が今まで見た中で最悪で最も雑然とした無効な擬似HTML / CSS / JSミックスを作成します。ウェブ開発で学んだすべてのルールに違反しています。さらに、レイアウト、デザイン、ロジック、サーバーとの通信など、決して緊密に結合されるべきではないものが一緒に投げられます。CSSでスタイリングしたり、UIキャンディー(構成可能なホットキー、ドラッグアンドドロップウィジェットなど)を追加したりなど、この出力を快適に拡張する方法がわかりません。 第二に、それはあまりにも複雑です。その複雑さは際立っています。あなたが私に尋ねると、それは基本的なウェブ技術の貧弱な抽象化であり、最終的には不自由で役に立たない。私にはどんな利点がありますか?考えてみれば、なし。何百ものコンポーネント?さらに、数万のHTML / CSSスニペット、数万のJavaScriptスニペット、および数千のjQueryプラグインが表示されます。これは本当に多くの問題を解決します-JSFを使用しない場合はありません。または、フロントコントローラーパターン。 そして最後に、2年後にはやり直さなければならないと思います。最初のGUIモックアップをすべて実装する方法がわかりません(さらに、チームにはJSFエキスパートがいません)。どういうわけか一緒にハッキングできたかもしれません。そして、さらにあります。ハックをハッキングできると確信しています。しかし、いつかは行き詰まってしまいます。サービス層より上のすべてのものがJSFを制御しています。そして、最初からやり直す必要があります。 私の提案は、JAX-RSを使用してREST APIを実装することです。次に、クライアント側のMVCでHTML5 / Javascriptクライアントを作成します。(またはMVCのフレーバー..)ところで。部分的なAndroidフロントエンドも開発しているため、とにかくREST APIが必要になります。 私は、JSFが今日の最良のソリューションであることを疑っています。インターネットが進化しているので、なぜこの「レーキ」を使用する必要があるのか​​わかりません。 さて、賛否両論とは何ですか?JSFを使用しないという点を強調するにはどうすればよいですか?私の提案よりもJSFを使用する長所は何ですか?

15
クライアント側のJavascriptからデータベースに直接移動しない理由はありますか?
重複の可能性: Web「サーバーレス」アプリケーションの作成 そこで、Stack Exchangeクローンを構築し、CouchDBのようなものをバックエンドストアとして使用することにしたとしましょう。組み込みの認証とデータベースレベルの承認を使用する場合、クライアント側のJavaScriptが公開されているCouchDBサーバーに直接書き込むことを許可しない理由はありますか?これは基本的にCRUDアプリケーションであり、ビジネスロジックは「投稿者のみが投稿を編集できる」で構成されているため、クライアント側のものとデータベースの間にレイヤーを配置する必要はほとんどありません。CouchDB側で検証を使用して、誰かがガベージデータを入れていないことを確認し、ユーザーが自分の_userデータしか読み取れないようにアクセス許可が適切に設定されていることを確認します。レンダリングは、AngularJSのようなものによってクライアント側で行われます。本質的には、CouchDBサーバーと多数の「静的」ページを用意するだけで十分です。サーバー側の処理は一切必要なく、HTMLページを提供できるものだけが必要です。 データベースを世界中に公開するのは間違っているように見えますが、このシナリオでは、アクセス許可が適切に設定されている限り、その理由を考えることはできません。Web開発者としての私の本能に反しますが、正当な理由は考えられません。それで、なぜこれは悪い考えですか? 編集:同様の議論がここにあるように見えます:Web「サーバーレス」アプリケーションの作成 編集:これまでのところ素晴らしい議論、そして私は皆のフィードバックに感謝します!CouchDBとAngularJSを具体的に呼び出す代わりに、いくつかの一般的な仮定を追加する必要があるように感じます。だからそれを仮定しましょう: データベースは、非表示のストアからユーザーを直接認証できます。 すべてのデータベース通信はSSL経由で行われます データ検証をすることができます(多分?べきではありません)データベースによって処理され 管理機能以外に私たちが気にする唯一の承認は、自分の投稿の編集のみが許可されている人 誰でもすべてのデータを読み取ることができます(パスワードハッシュを含む可能性があるユーザーレコードを除く) 管理機能は、データベース認証によって制限されます 誰も管理者ロールに自分を追加できません データベースは比較的簡単に拡張できます 真のビジネスロジックはほとんどありません。これは基本的なCRUDアプリです

3
JavaScriptフレームワーク/ライブラリに、純粋なJavaScriptにすでに存在する関数があるのはなぜですか?
フレームワーク/ライブラリは、ネイティブに既に存在しているのに、なぜ独自のヘルパーを持っているのでしょうか。 jQueryとAngularJSを見てみましょう。独自のeach反復関数があります。 jQuery.each() angular.forEach() しかし、我々は持っていArray.prototype.forEachます。 同様に、 jQuery.parseJSON() angular.fromJson() しかしJSON.parse()、バニラJavaScriptには関数があります。

8
クライアント側のコーディング:悪意のある使用を防ぐ方法
過去数年にわたって、クライアントサイド(ブラウザ)アプリケーションのトレンドは本当に始まっています。 私の最新のプロジェクトでは、時代とともに動き、クライアント側のアプリケーションを作成することにしました。 このアプリケーションの一部には、トランザクション電子メールのユーザーへの送信が含まれます(たとえば、サインアップの検証、パスワードのリセット電子メールなど)。サードパーティのAPIを使用してメールを送信しています。 通常、サーバーでアプリケーションを実行します。サーバー上のコードからサードパーティAPIを呼び出します。 クライアント側のアプリケーションを実行すると、ユーザーのブラウザでこれを行う必要があります。サードパーティAPIは、これを実現するために必要なJavaScriptファイルを提供します。 私が見ることができる最初の明白な問題は、APIキーを使用する必要があることです。これは通常、サーバーに安全に保存されますが、このキーをクライアントブラウザーに提供する必要があります。 私がこの問題を回避できると仮定すると、次の問題は、技術に精通したユーザーがブラウザでJavaScript開発者ツールをロードし、アプリケーションで設定したルールを遵守するのではなく、好きなように電子メールAPIを使用することを停止することです。 私の一般的な質問は-クライアント側アプリケーションの悪意のある使用をどのように防ぐことができるのでしょうか?

8
なぜ人々はJavaScriptを無効にしているのですか?
昨日質問しましたが、JavaScriptを無効にするために開発する必要がありますか?。コンセンサスは次のとおりだと思います:はい、JavaScriptを無効にするために開発する必要があります。次に、ユーザーがJSを無効にする理由を理解したいだけです。多くの開発者(質問に答えた人は開発者だと思います)がJSを無効にしているようです。何故ですか。ユーザーがJSを無効にするのはなぜですか?セキュリティのために?速度?または何?

2
Google Web Toolkitを使用しない場合 [閉まっている]
社内の主要なWebアプリ開発プロジェクトでGWTを使用することを検討しています。つまり、私の目での主な利点は、Javaスタックへのクロスコンパイルであり、(少なくとも理論的には)技術スタックのサイズを1つ削減するのに役立ちます。 ただし、(ほとんどの開発者と同様に)以前に焼かれたことがありますが、特定の問題ドメイン内での使用を妨げる、または制限するGWTの問題で実際に使用したプログラマーから聞いてみたいと思います。 GWTの使用に反対する論拠は何ですか?
55 java  javascript  ajax  gwt 

12
JavaScriptにPHPを含めることは悪い習慣と見なされますか?
このサイトでは何度もこのようなことをしようとしている人がいます: <script type="text/javascript"> $(document).ready(function(){ $('<?php echo $divID ?>').click(funtion(){ alert('do something'); }); }); </script> これは、人々が自然に陥るようなパターンではないと思います。これを示しているチュートリアルや学習資料がそこになければなりません。そうでなければ、それはあまり見られません。私が求めているのは、これをあまりにも大きくしているのですか、これは本当に悪い習慣ですか? 編集: これについて私の友人に話していました。彼はしばしばJavaScriptにルビーを入れて、この点を持ち出しました。 JavaScriptにアプリケーション全体の定数を動的に配置して、2つのファイルを編集する必要はありませんか?例えば... MYAPP.constants = <php echo json_encode($constants) ?>; また、ライブラリで使用する予定のデータを直接エンコードしてもかまいません ChartLibrary.datapoints = <php echo json_encode($chartData) ?>; または毎回AJAX呼び出しを行う必要がありますか?

8
マルチスレッドJavaScriptランタイム実装を作成することの欠点は何ですか?[閉まっている]
この1週間、マルチスレッドJavaScriptランタイムの実装に取り​​組んでいます。JavaScriptCoreとboostを使用して、C ++で作成した概念実証があります。 アーキテクチャは単純です。メインスクリプトの評価が完了すると、ランタイムは起動してスレッドプールに参加します。スレッドプールは、共有優先度キューからタスクを選択し始めます。2つのタスクが同時に変数にアクセスしようとすると、アトミックとマークされ、アクセスを争います。 問題は、この設計をJavaScriptプログラマーに見せると、非常に否定的なフィードバックが得られ、その理由がわからないことです。非公開でも、JavaScriptはシングルスレッドである必要があり、既存のライブラリを書き換える必要があり、作業を続けるとグレムリンがすべての生物を生成して食べると言う。 私はもともとネイティブのコルーチン実装(ブーストコンテキストを使用)も配置していましたが、それを捨てなければなりませんでした(JavaScriptCoreはスタックについてはしゃれています)。 どう思いますか?JavaScriptはシングルスレッドを対象としていますが、JavaScriptはそのままにしておくべきですか?誰もが同時JavaScriptランタイムのアイデアに反対しているのはなぜですか? 編集:プロジェクトは現在GitHubにあります。自分で試してみて、あなたの考えを教えてください。 以下は、競合なしですべてのCPUコアで並行して実行されるプロミスの図です。

1
scriptタグを使用してJavaScriptファイルを含める最良の方法は何ですか?
通常、次のようにscriptタグを使用してJavaScriptファイルを含めます。 <script type="text/javascript" src="somefile.js"></script> 言語属性を使用している人もいます。 最近では、多くの人がtype属性を省略しています。JavaScriptがデフォルトのスクリプト言語である場合は、type属性も省略する必要があると感じ始めました。type属性を省略してもいいでしょうか?問題は発生しますか?
50 javascript 

6
パフォーマンスを偽る隠されたAJAXリクエストはどれほど安全ですか?
隠されたAJAXリクエストとは何ですか? ユーザーのアクションがすぐに発生するように見えるように設計された非表示のAJAXリクエストの使用が増加していることに気付きました。このタイプのAJAXリクエストを非ブロッキングと呼びます。これは、ユーザーに発生を認識せずに行われたAJAXリクエストであり、バックグラウンドで実行され、操作はサイレントです(AJAX呼び出しが正常に完了したことを示す詳細はありません)。目標は、操作が実際に終了していないときにすぐに発生したように見えるようにすることです。 ノンブロッキングAJAXリクエストの例を次に示します。 ユーザーがメールのコレクションで[削除]をクリックします。アイテムは受信トレイからすぐに消え、他の操作を続行できます。一方、AJAXリクエストはバックグラウンドでアイテムの削除を処理しています。 ユーザーが新しいレコードのフォームに入力します。保存をクリックします。新しいアイテムがリストにすぐに表示されます。ユーザーは引き続き新しいレコードを追加できます。 明確にするために、AJAX要求をブロックする例を次に示します。 ユーザーがメールのコレクションで[削除]をクリックします。砂時計カーソルが表示されます。AJAX要求が行われ、応答すると砂時計カーソルがオフになります。ユーザーは、操作が完了するまで1秒待つ必要があります。 ユーザーが新しいレコードのフォームに入力します。保存をクリックします。AJAXローダーをアニメーション化すると、フォームが灰色に変わります。「データが保存されました」というメッセージが表示され、新しいレコードがリストに表示されます。 上記の2つのシナリオの違いは、非ブロッキングAJAXセットアップでは動作のフィードバックが提供されないことと、ブロッキングAJAXセットアップでは提供されることです。 隠されたAJAXリクエストのリスク このスタイルのAJAX要求の最大のリスクは、AJAX要求が失敗したときにWebアプリケーションがまったく異なる状態になる可能性があることです。 たとえば、非ブロッキングの例。 ユーザーは多数のメールを選択します。削除ボタンをクリックします。操作はすぐに行われるように見えます(項目はリストから消えます)。次に、ユーザーは[作成]ボタンをクリックして、新しいメールの入力を開始します。この時点で、JavaScriptコードがAJAXリクエストが失敗したことを発見します。スクリプトはエラーメッセージを表示する可能性がありますが、現時点では本当に意味がありません。 または、ブロッキングの例。 ユーザーは多数のメールを選択します。削除ボタンをクリックします。砂時計が見えますが、操作は失敗します。「error。blah blah blah」というエラーメッセージが表示されます。それらは電子メールのリストに戻り、削除したい電子メールが選択されたままです。彼らは再びそれらを削除しようとする可能性があります。 ノンブロッキングAJAXリクエストを実行するための他の技術的リスクもあります。ユーザーはブラウザを閉じ、別のWebサイトに移動し、現在のWebの別の場所に移動して、エラー応答のコンテキストを無意味にすることができます。 それで、なぜそんなに人気が出るのでしょうか? Facebook、Google、Microsoftなど。これらの大規模なドメインはすべて、非ブロッキングAJAXリクエストを使用して、操作が即座に実行されているように見せるようになっています。また、保存ボタンや送信ボタンのないフォームエディタが増えています。フィールドを出るかEnterキーを押すとすぐに。値が保存されます。プロフィールが更新されたというメッセージや保存手順はありません。 AJAXリクエストは確実ではなく、完了するまで成功として扱われるべきではありませんが、多くの主要なWebアプリケーションはそのように動作しています。 ノンブロッキングAJAX呼び出しを使用するこれらのWebサイトは、レスポンシブアプリケーションをシミュレートし、高速に表示されるという犠牲を払って不要なリスクを冒していますか? これは、競争力を維持するために私たち全員が従うべき設計パターンですか?

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