Web開発におけるUI層の疎結合
今回は、Web 開発における UI 層の疎結合について、Web 開発で UI 層の疎結合を使用する際の 注意事項 についてお届けします。
Web 開発では、UI は互いに分離され、相互作用する 3 つのレイヤーによって定義されます。 HTMLは、ページのデータとセマンティクスを定義するために使用されます CSSは、ページにスタイルを追加し、視覚的な機能を作成するために使用されます JSは、ページに動作を追加してよりインタラクティブにするために使用されます 疎結合について、意味不明な文章を話させてください。他のコンポーネントを変更せずに 1 つのコンポーネントを変更できる場合、疎結合になります。多くの人がコードの保守に関与する大規模な複数人システムの場合、コードの保守性にとって疎結合は重要です。開発者には、コードの一部を変更するときに他の人のコードを壊さないようにしてもらいたいと考えています。大規模システムの各コンポーネントの内容が制限されている場合、疎結合が実現されます。基本的に、疎結合を確保するには各コンポーネントを十分に薄く保つ必要があります。コンポーネントについてあまり知られていないほど、システム全体をより適切に形成できます。 注意すべき点が 1 つあります。コンポーネントが連携して「結合なし」を実現することはできません。すべてのシステムにおいて、コンポーネントはそのジョブを実行するためにいくつかの情報を共有します。私たちの目標は、1 つのコンポーネントへの変更が他の部分に定期的に影響を及ぼさないようにすることであることは簡単に理解できます。 Web UI が疎結合であれば、デバッグが簡単です。テキストまたは構造に関連する問題は、HTML を検索することで見つけることができます。スタイル関連の問題が発生した場合、問題が CSS にあることがわかります。最後に、これらの動作上の問題に対して、JS に直接アクセスして問題を見つける機能は、Web インターフェイスの保守性の中核部分です。 WebPage の時代では、HTML/CSS/JS の 3 つのレイヤーを分離することが推奨されています。たとえば、DOM の inline 属性を使用してリスナーをバインドすることは禁止されています。 test を書くと批判されるでしょう。しかし、WebApp時代になり、Reactに代表されるMVVMやMVCフレームワーク(厳密に言えばReactはView層に着目したフレームワークに過ぎません)はいずれもHTML、CSS、JSを一緒に書くことを推奨しており、イベント リスナーをインラインでバインドするコード。疑問に思わずにはいられない、私たちは逆行しているのでしょうか?
歴史は時々ぐるぐる回る。実際、スパイラルは反転し、新たな出発点に立った。 ——Yu Bo 「Web R&D モデルの進化」 従来の WebPage の時代では、言語レベルでもフレームワーク レベルでもコンポーネント化のサポートが高くありませんでした。JS (ES6 以前の時代) とネイティブではなかった jQuery について考えてみましょう。サポートモジュールがあるため、メンテナンスコストの増加を避けるために、3 層分離のベストプラクティスをお勧めします。 ES6 とフロントエンド MV* フレームワークの登場により、フロントエンド開発モデル全体が変化しました。フロントエンドはページを作成するだけでなく、より多くの WebApp を作成していることがわかります。アプリケーションの規模と複雑さは、WebPage 時代のものとは異なります。 React は非常に典型的なもので、JSX を使用して HTML を記述し、ページ構造とページ ロジックを一緒に直接記述することを提案しています。これを WebPage 時代に置くと、直接的には典型的なアンチパターン教材としてみなされると思いますが、WebApp 時代ではほとんどの人に受け入れられ、使用されています。 React チームが提案した JS での CSS を含めると、フロントエンド開発が完全に JS によって支配され、コンポーネント化がより徹底されるように、CSS を JS で記述したいとも考えています (私は JS での CSS について詳しく調べて理解したわけではありませんが、このプロジェクトでは実際に大規模な実務経験がないため、現在はまだ様子見の姿勢を維持し、CSS 開発には以前の SASS と LESS を使い続けています。) 2 つの Web 時代の開発モデルは劇的に変化しましたが、3 層の疎結合設計に関して従う必要のある一般原則がまだいくつかあります: CSS から JS を抽出します。 初期の IE8 以前のブラウザでは、CSS で JS を書くことができました (例を書かずに、これはアンチパターンです。覚えていないほうが良いです)。これによりパフォーマンスの問題が発生し、さらに恐ろしいのは、それが困難になることです。将来的には維持します。しかし、ここにいる皆さんの中でこの種のコードにアクセスできる人はいないと思いますが、それは問題ありません。 JSからCSSを抽出します。 JS で CSS を変更できないというわけではありません。代わりに、クラスを変更することでスタイルを間接的に変更できます。次の例を参照してください:// 不好的写法element.style.color = 'red'; element.style.left = '10px'; element.style.top = '100px'; element.style.visibility = 'visible';// 好的写法.reveal { color: red; left: 10px; top: 100px; visibility: visible; } element.classList.add('.reveal');
ライフサイクル
中に、JS は要素の className を自由に追加および削除できます。 className で定義されたスタイルは CSS コード内にあります。 CSS のスタイルは、JS を更新しなくてもいつでも変更できます。 CSS との疎結合を維持するために、JS はスタイルを直接操作しないでください。 でこれらのデフォルト値を変更します。フロントエンドが HTML と JS を一緒に書いている現状を考慮して、原書では 2 つを分離する実践については触れません。しかし、これだけナンセンスなことを言っても、次のことを覚えておいてください。予測可能性はテストと開発の迅速化につながり、どこからバグのデバッグを開始すればよいかを (推測するのではなく) 知っていると、問題の解決が速くなり、コードの全体的な品質が高くなります。
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨書籍:
以上がWeb開発におけるUI層の疎結合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この AI 支援プログラミング ツールは、急速な AI 開発のこの段階において、多数の有用な AI 支援プログラミング ツールを発掘しました。 AI 支援プログラミング ツールは、開発効率を向上させ、コードの品質を向上させ、バグ率を減らすことができます。これらは、現代のソフトウェア開発プロセスにおける重要なアシスタントです。今日は Dayao が 4 つの AI 支援プログラミング ツールを紹介します (すべて C# 言語をサポートしています)。皆さんのお役に立てれば幸いです。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot は、より少ない労力でより迅速にコードを作成できるようにする AI コーディング アシスタントであり、問題解決とコラボレーションにより集中できるようになります。ギット

世界初の AI プログラマー Devin の誕生から 1 か月も経たない 2022 年 3 月 3 日、プリンストン大学の NLP チームはオープンソース AI プログラマー SWE-agent を開発しました。 GPT-4 モデルを利用して、GitHub リポジトリの問題を自動的に解決します。 SWE ベンチ テスト セットにおける SWE エージェントのパフォーマンスは Devin と同様で、平均 93 秒かかり、問題の 12.29% を解決しました。専用端末と対話することで、SWE エージェントはファイルの内容を開いて検索したり、自動構文チェックを使用したり、特定の行を編集したり、テストを作成して実行したりできます。 (注: 上記の内容は元の内容を若干調整したものですが、原文の重要な情報は保持されており、指定された文字数制限を超えていません。) SWE-A

Go 言語開発モバイル アプリケーション チュートリアル モバイル アプリケーション市場が活況を続ける中、ますます多くの開発者が Go 言語を使用してモバイル アプリケーションを開発する方法を検討し始めています。シンプルで効率的なプログラミング言語として、Go 言語はモバイル アプリケーション開発でも大きな可能性を示しています。この記事では、Go 言語を使用してモバイル アプリケーションを開発する方法を詳しく紹介し、読者がすぐに始めて独自のモバイル アプリケーションの開発を開始できるように、具体的なコード例を添付します。 1. 準備 始める前に、開発環境とツールを準備する必要があります。頭

最も人気のある 5 つの Go 言語ライブラリの概要: 特定のコード例が必要な、開発に不可欠なツール Go 言語は、その誕生以来、広く注目され、応用されてきました。新しい効率的で簡潔なプログラミング言語としての Go の急速な開発は、豊富なオープンソース ライブラリのサポートと切り離すことができません。この記事では、Go 言語ライブラリの中で最も人気のある 5 つを紹介します. これらのライブラリは Go 開発において重要な役割を果たし、開発者に強力な機能と便利な開発エクスペリエンスを提供します。同時に、これらのライブラリの用途と機能をよりよく理解するために、具体的なコード例を示して説明します。

Go 言語は、高速で効率的なプログラミング言語として、バックエンド開発の分野で広く普及しています。ただし、Go 言語をフロントエンド開発と結びつける人はほとんどいません。実際、フロントエンド開発に Go 言語を使用すると、効率が向上するだけでなく、開発者に新たな視野をもたらすことができます。この記事では、フロントエンド開発に Go 言語を使用する可能性を探り、読者がこの分野をよりよく理解できるように具体的なコード例を示します。従来のフロントエンド開発では、ユーザー インターフェイスの構築に JavaScript、HTML、CSS がよく使用されます。

Android 開発は多忙で刺激的な仕事であり、開発に適した Linux ディストリビューションを選択することが特に重要です。数多くある Linux ディストリビューションの中で、Android 開発に最適なのはどれでしょうか?この記事では、この問題をいくつかの側面から検討し、具体的なコード例を示します。まず、現在人気のある Linux ディストリビューション (Ubuntu、Fedora、Debian、CentOS など) をいくつか見てみましょう。これらにはそれぞれ独自の利点と特徴があります。

Cockpit は、Linux サーバー用の Web ベースのグラフィカル インターフェイスです。これは主に、初心者/熟練ユーザーにとって Linux サーバーの管理を容易にすることを目的としています。この記事では、Cockpit アクセス モードと、CockpitWebUI から Cockpit への管理アクセスを切り替える方法について説明します。コンテンツ トピック: コックピット エントリ モード 現在のコックピット アクセス モードの確認 CockpitWebUI からコックピットへの管理アクセスを有効にする CockpitWebUI からコックピットへの管理アクセスを無効にする まとめ コックピット エントリ モード コックピットには 2 つのアクセス モードがあります。 制限付きアクセス: これは、コックピット アクセス モードのデフォルトです。このアクセス モードでは、コックピットから Web ユーザーにアクセスできません。

1. ブランチとマージ ブランチを使用すると、メイン ブランチに影響を与えることなくコードの変更を試すことができます。 gitcheckout を使用して新しいブランチを作成し、新しい機能を試したりバグを修正したりするときにそれを使用します。完了したら、gitmerge を使用して変更を master ブランチにマージして戻します。サンプルコード: gitcheckout-bnew-feature // new-feature ブランチに変更を加える gitcheckoutmain gitmergenew-feature2. ステージング作業 gitadd を使用して、追跡したい変更をステージング領域に追加します。これにより、すべての変更をコミットせずに、選択的に変更をコミットできます。サンプルコード: gitaddMyFile.java3
