AngularJSの機能をサポートするために邪魔なJavaScriptは必要ですか?


9

まず、AngularJSについて学習しているだけだと言ってから、この記事を読んでいました。

http://www.ng-newsletter.com/posts/angular-for-the-jquery-developer.html

私の理解では、控えめなJavaScriptは一般に「正しいこと」と考えられています(おそらく議論の余地がありますが、私の質問の範囲外です)。しかし、AngularJSの特定の機能があり、イベントバインディングを次のような属性で指定する必要があるかどうか疑問に思っていましたng-click。AngularJSを使用してインラインイベントバインディングを使用しない方法はありますか?

参考までに:邪魔なJavaScriptは、通常、JavaScriptをHTML自体に結び付けることを指します。控えめなJavaScriptとは、JavaScriptへの参照を持つプレーンテキストのマークアップではなく、JavaScriptまたはその他の手段を使用して、コード動作をDOMにプログラムで適用することを指します。


私は質問を言い直し、意見に基づくものを減らしました。
Kevin

4
実際にこれが既に回答されていますstackoverflow.com/questions/20906804/...
ケビン・

回答:


6

はい。

これが角度の働きです。

昔(恐竜がすべて死んだ直後、スマートウォッチが次の大きなものになる少し前)、控えめなJavaScriptは正しいものと見なされていました。控えめなJavaScriptは彼女のいとこプログレッシブエンハンスメントと一緒にたむろし、2人は世界への光と善のビーコンとして予告されました。

それには理由がありました。多くのユーザーが、JavaScriptエンジンが不十分なブラウザを使用しているか、JavaScriptエンジンを使用していない可能性があります。または、JavaScriptを無効にしました。Webは主にハイパーテキスト転送を目的としたものであり、JavaScriptを強制することでWebサイトを使用できないようにすべきではないとのことでした。

同様に、JavaScriptをHTMLから除外することは理にかなっています。HTMLは純粋に保つ必要があると考えられました。JavaScriptは後で追加したものだからです-ユーザーが許可した場合。そうでない場合、少なくともHTMLマークアップは、伝えようとしていたことのセマンティクスを反映しています。

物事が変わったため、AngularJSの哲学や最新のWeb開発ガイドラインではありません。AngularJSまたは同様のフレームワークを使用する場合、テキストや画像だけでなく、Webを使用してアプリケーションを配信します。JavaScriptなしではWebアプリケーションは役に立たず、それ以外のふりをする意味はありません。したがって、(a)JavaScriptが有効になっているすべてのユーザーに安全に依存でき、(b)速度が低下するため、プログレッシブエンハンスメントの束縛を解き放ちました。

プログレッシブエンハンスメントを実行していないのに、なぜ控えめなJavaScriptを使用するのですか?懸念の分離は素晴らしいコンセプトです。しかし、それは他の6分の1または6分の1です。JavaScriptへの参照で謎をかけられたHTMLを持っているか、HTMLへの参照で謎をかけられたJavaScriptを持っています(jQueryの方法)。

AngularJSを使用すると、他のスタイルのWeb開発で見たよりも、コード内の問題がより明確に分離されます。確かに、HTMLにはJS関数への参照があります。しかし、コードを壊すことを心配することなくHTMLを簡単に移動でき、JSはクリーンでテスト可能であり、非常に特定のDOMに依存しません。これにより、ビジネスロジックを再利用し、HTMLを再利用できます。

結論:それについて強調しないでください。すぐに慣れるでしょう。そして、あなたはいつも反対が正しい道だと言われたからといって、物事に抵抗しないでください。

補遺は 、あなたのHTMLを標準と互換性があることが重要だと感じた場合は、使用することができdata-、あなたの角度ディレクティブに接頭辞を:すなわち、data-ng-click=そしてdata-ng-repeat=、あなたのHTMLはW3C準拠となります。個人的には心配していませんが、害はありません。


3
良い説明ですが、「プログレッシブエンハンスメントを行わない」というあなたの発言には警戒しています。プログレッシブエンハンスメントは、noJSにフォールバックするだけではありません。Retinaデバイスを持たないユーザー向けに、Retinaイメージとフォールバック付きのSVGを提供しています。微妙なアニメーションをサポートするブラウザに追加しています。(YouTubeのように)低帯域幅デバイスでのストリーミングビデオの品質が低下しています。レスポンシブデザインです。WebアプリケーションにnoJSフォールバックは必要ないかもしれませんが、プログレッシブ拡張を放棄しないでください。
ブライアンブラウン2015

1
@bryanbraunあなたは正しいです。ポイントを取る。
アーロンGreenwald

どのように控えめなAngularを実行しますか?Angularを展開する準備ができており、深刻な設計上の欠陥が見つかりました。50人のHTMLデザインチームと2人の開発チームがいます。デザイナーはHTML以外を追加せずにHTMLを変更します。Webサイトがポストされた後でも、毎日作成されたすべてのテンプレートを調整する必要がある場合、2人の開発者が50人のデザイナーに追いつくことができません。サーバーでその機能を自動化して、同じクライアントのダウンロード効率でzipファイル内のzipファイル内のページスコープごとにhtmlを収集、圧縮、およびキャッシュできる場合、htmlテンプレート全体をWebpackなどのJavaScriptコードにコンパイルするのもばかげているようです。
ザカリースコット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.