検索
ホームページウェブフロントエンドhtmlチュートリアルすべては HTML コンポーネントです - HTML コンポーネント化とビジュアル プログラミングについての簡単な説明_html/css_WEB-ITnose

AngularJS 1.0.7 以降、プロジェクトで使用します。私はちょうど angular-seed を使用してページを作成し始め、それを ng-controller と組み合わせて多くのことを実行しました。同時に、ディレクティブを使用していくつかのパブリックコンポーネントを作成しました。

私たちのグループが振り返りをしていたとき、私たちはゆっくりと比較し始めました。 ng-controller で作られたものはどれも大きく、相互に関連しており、組織が明確ではありません。ただし、ディレクティブは自己完結型であり、コンポーネントのネストと通信制御により、任意のページを作成できます。また、各コンポーネントが独立しており、テスト可能であり、他の Scope / EventListener の影響を受けないことも保証されます。

すべては指示であるべきです。

例を示します。

JavaScript

<bw-appnode appnode-restful>    <bw-table>        <bw-start-appnode></bw-start-appnode>        <bw-list></bw-list>    </bw-table>    <bw-search>    </bw-search></bw-appnode>
 <bw-appnodeappnode-restful>    <bw-table>        <bw-start-appnode></bw-start-appnode>        <bw-list></bw-list>    </bw-table>    <bw-search>     </bw-search></bw-appnode> 

この単純な HTML 構造は、多くの苦労を経てまとめられました (模倣度の高いサンプル)

手がかり識別できますか? 1. コンポーネント化 2. ビジュアル HTML 3. テスト可能なユニット

1. コンポーネント化

言うまでもなく、bw-appnode は、bw-table や bw-search と同様にコンポーネントです。これらのコンポーネントは相互にネストされており、互いに独立しており、プロトコル (スコープまたはサービス) を使用して通信します。利点は非常に明白です。

たとえば、bw-table はまだ完成しておらず、サーバーの Restful API もまだ完成していませんが、bw-search の開発を独自に開始できます。 bw-search には、bw-appnode の偽のデータをフィルタリングする独自の独立した UI と複雑なロジックが付属していますが、bw-table は単なるレンダリング層であり、bw-appnode に対する変更は自動的に bw-table に反映されます。それが角度スコープです)。

2. 視覚化/表現

理由 1: 私たちは JavaScript イベント バインディングを使用して多くの関数を実装することに慣れています。ゆっくりと、ボタンがクリックされたときに何が起こるかを推測するか、ソースコードを苦労して追跡することしかできません。 Dom ノード上に JavaScript イベント リスナーがいくつあるかを検出することは困難です。エンジニアは誰でも、JS ファイル内の任意の場所に、予測不可能でランダムなリスニング イベントをノードに追加する可能性があります。

理由 2: HTML5 で非常に多くのタグが追加される理由を覚えていますか?たとえば、セクション/記事/ビデオなどです。このため、HTML ページと関数はより視覚的でコンポーネントベースになる可能性があります。視覚化とは、何をしているのか一目でわかることを意味します (Chrome Developer Tools Inspect、Google Crawler の正確な検索)。コンポーネント化とは、ラベルが独自の一連の独立した動作とビューをレンダリングすることを意味します (Web コンポーネント / Shadow-Dom のタイトルの意味)。したがって、この HTML フラグメント/ページ ブロックが何をするのかを HTML から理解できれば、それがどれほど素晴らしく便利であるかがわかります。ここには記述プログラミングという別の用語もあります。この例では、最上位ノードには

JavaScript

appnode-restful
 appnode-restful 

という名前の新しいディレクティブがあります。名前が示すように、これはサーバー側の情報を取得するために使用されます。のデータ。サーバーが終了する前に、静的データがそこから直接取得されます (Promisesolve を使用)。データを取得した後、それは bw-appnode のスコープに直接設定されます。

さらに意識すべき点は、このノードは別の独立したディレクティブであるため、ajax データ キャッシュ処理などのより複雑なロジックを考慮できることです。私たちはこのコンポーネントに冷静にこう言いました。「とにかくこれをやって、ゆっくりとその方法を洗練させてください。望むだけ正確に実行してください。人生で 1 つのことしかやらないとしても、それができないとは思いません」上手にやれよ。」さらに、このノードは他の場所でも使用できます。appnode データが必要な場合は、この bw-appnode ページに限定されません。ただし、私はここでコンポーネントの主な目的が再利用であると言っているわけではありません。これは明らかにこの記事で話そうとしていることではありません。

3. テスト可能なユニットと jsDoc

ここで話しているのは単体テストではなく、ユニットのテストです。明らかに、上記のコンポーネントはいずれも、独立してテスト用に取り出すことができます。関連するディレクティブの js ファイルを導入して html ファイルを表示するだけで、このディレクティブを別の独立したテスト スペース (分度器ドライバー) でテストできます。テスト ケースとデータ環境は、必要に応じて追加したり、変更したりできます。強い結合の問題を心配する必要はまったくありません。

また、jsDoc はコンポーネント化されているため、記述がはるかに簡単です。ディレクティブ、モジュール定義。

この経験をまとめてから数か月後 (すべてをディレクティブにする必要があります。)、Angular2 / React チームがこの原則の重要性を以前から認識していて、秘密裏にすべてを調整していたことがわかりました。

React/Angular2 の観点では、すべてがコンポーネントです。新しい SPA を作成する場合、最初に行う必要があるのは、作業するページをさまざまなネストされたコンポーネントに分割することです。

他の人の写真を使用して例を挙げてみましょう。

明確かつ自明です。ただし、コンポーネントを引き出した後、Scope 通信を使用するか、Publish/Subscribe Nengxin を使用するかを決定する必要があります。また、ページ (コンテナ コンポーネント) を構成するスーパー ルーターの抽象化層 (既製のルーターを使用するのは弱すぎます) 、自分で発明したルーターを使用する必要があります)。ここではこれ以上の詳細はありません。

子供たちの靴について共有するための優れたリソースをいくつか紹介します。

Facebook React: ステップ 1: UI をコンポーネント階層に分割する

AngularJS: AngularJS でのコンポーネントベースの考え方

AngularJS: Angular アプリをコンポーネント スタイルにリファクタリング

最後に、他の人が作った素晴らしいものを紹介します。

コンポーネントで中関村とシリコンバレーのフロントエンドに革命を起こしましょう。

追記:

私は現在 Microsoft KnockoutJS を使用していますが、Angular/React から得た経験により KnockoutJS クラウド アプリケーションは完全に革新されました。

コンポーネント、成功者にとって最良の選択です。

Xiao Fang、中関村ソフトウェアパーク、2016 年 3 月 18 日。転載の際は出典を明記してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は?公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は?Mar 04, 2025 pm 12:32 PM

公式アカウントのWebページはキャッシュを更新します。これはシンプルでシンプルで、ポットを飲むのに十分な複雑です。あなたは公式のアカウントの記事を更新するために一生懸命働きましたが、ユーザーはまだ古いバージョンを開くことができますか?この記事では、この背後にあるtwist余曲折と、この問題を優雅に解決する方法を見てみましょう。それを読んだ後、さまざまなキャッシュの問題に簡単に対処でき、ユーザーが常に新鮮なコンテンツを体験できるようになります。最初に基本について話しましょう。それを率直に言うと、アクセス速度を向上させるために、ブラウザまたはサーバーはいくつかの静的リソース(写真、CSS、JSなど)やページコンテンツを保存します。次回アクセスするときは、もう一度ダウンロードすることなく、キャッシュから直接検索できます。自然に高速です。しかし、このことは両刃の剣でもあります。新しいバージョンはオンラインです、

WebページのPNG画像にストローク効果を効率的に追加する方法は?WebページのPNG画像にストローク効果を効率的に追加する方法は?Mar 04, 2025 pm 02:39 PM

この記事では、CSSを使用したWebページへの効率的なPNG境界追加を示しています。 CSSはJavaScriptやライブラリと比較して優れたパフォーマンスを提供し、微妙または顕著な効果のために境界幅、スタイル、色を調整する方法を詳述していると主張しています

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか?HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか?Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

&lt; datalist&gt;の目的は何ですか 要素?&lt; datalist&gt;の目的は何ですか 要素?Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか?HTML5のクロスブラウザー互換性のベストプラクティスは何ですか?Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

&lt; meter&gt;の目的は何ですか 要素?&lt; meter&gt;の目的は何ですか 要素?Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

&lt; Progress&gt;の目的は何ですか 要素?&lt; Progress&gt;の目的は何ですか 要素?Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素?HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素?Mar 12, 2025 pm 04:05 PM

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン