ページ リファクタリング スキル - Javascript、CSS

ページ リファクタリング スキル - Javascript、CSS

JS、CSSについて

CS: ...

  1. 上部のスタイルシート
  2. CSS式を避ける
  3. 外部JS、CSSの使用
  4. JSとCSSを削減
  5. <link> 、@import
  6. フィルターを避ける

JS:

  1. 下部のスクリプト
  2. 外部JS、CSSの使用
  3. JSとCSSを削減
  4. スクリプトを繰り返す必要はありません
  5. DOMアクセスと操作を減らす
  6. イベント委任

1. スタイルシートが上部に固定されているのはなぜですか?

ブラウザはページを上から下へレンダリングします。<body> 内で <link> や <style> に遭遇すると、ページのレンダリングがブロックされページが再描画されることもあります。グリッドショップのように、すべてが整然と配置されているのに、上司がこれをこう配置しろ、ああ配置しろと言うので、一つ一つ再配置しなければなりません。さらに、必要なスタイルを順番に読み込むことができるように、<head> に追加されます。

2. CSS 式を避けてください。なぜでしょうか?

私も含め、CSS 式を学ぶときに、それを避けるか使用しないようにと言う人が多いので、JS の eval も含めて、私たちは怠けてそれを読みません...

その後、たまたまプロジェクトで一度使用してみたのですが、結果はこうでした。 。 。これが最後に発見されたバグとなりました。 。 。 (IE6はページスタイルに影響します)

実際、CSS 式の主な欠点は、パフォーマンスに影響することです。CSS は時間に敏感であり、スタイルを変更するとすぐに有効になることを知っておく必要があります。

ウィンドウのサイズを変更したり、ページをスクロールしたり、マウスを動かしたりすると、式の評価が頻繁に実行され、重大な影響が生じるため、これを避けるようにしてください。

3. 外部 JS と CSS を使用する理由

外部ファイルを使用すると HTTP リクエストが増加することは誰もが知っていますが、キャッシュにより、ユーザーが再度アクセスしたとき、または他のページで同じファイルにアクセスしたとき、ページの応答速度が大幅に向上します。さらに、外部 JSS と CSS によってページ内のドキュメント サイズを削減できるという利点もあります。

4. JS と CSS を削減します。なぜでしょうか?

言うまでもありませんが…なぜそう思うのですか?

5. <link>、@import を使用する理由

まず、この 2 つの違いを見てみましょう。

違い1:先祖の違い。 @import は CSS で完全に提供されるメソッドです。リンクは XHTML タグです。CSS を読み込むだけでなく、RSS など他のものも定義できます。@import は CSS カテゴリに属し、CSS のみを読み込むことができます。

違い2: 読み込み順序の違い。リンクが CSS を参照する場合、ページの読み込みと同時に読み込まれます。@import では、読み込む前にページが完全に読み込まれる必要があります。

違い3:互換性の違い。リンクは XHTML タグであり、互換性の問題はありません。@import は CSS2.1 で提案されており、それより低いバージョンのブラウザーではサポートされていません。

違い 4: DOM を使用してスタイルを制御する場合の違い。 link は、スタイルを変更するために DOM を制御するための Javascript の使用をサポートしていますが、@import はこれをサポートしていません。

2 つを比較すると、@import は明らかに弱いです...

6. フィルターの使用は避けてください。なぜでしょうか?

IE 固有のプロパティ AlphaImageLoader は、バージョン 7.0 未満で表示される PNG 画像の半透明効果を修正するために使用されます。このフィルターの問題点は、画像の読み込み中にコンテンツのレンダリングが停止し、ブラウザがフリーズしてしまうことです。画像だけでなく各要素ごとに一度計算されるため、メモリ使用量が増加するため、問題は多面的です。
AlphaImageLoader の使用を完全に回避する最善の方法は、代わりに IE で適切に動作する PNG8 形式を使用することです。 AlphaImageLoader を本当に使用する必要がある場合は、アンダースコア フィルターを使用して、IE7 以上のユーザーに対してこれを無効にしてください。

7. スクリプトは下部に配置されています。なぜですか?

このスクリプトの問題は、レンダリング中にブラウザが <script> に遭遇すると、内部の JS をダウンロードして実行することです。この期間中、ページはブロックされ、完了するまで待機してから実行を続行します。したがって、できるだけ早くユーザーにページを表示するには、JS を </body> の上に配置する必要があります。

8. DOM へのアクセスと操作を減らす理由は何ですか?

参照: 「High Performance JavaScript」には、「DOM を島、JS を有料橋でつながれた別の島と考えてください」という比喩があります。

操作: DOM 要素を変更およびアクセスすると、ページが再描画され、リフローされます。つまり、再描画され、リフローされます。

つまり、問題は明らかです。

解決策: 訪問した要素をキャッシュする

ノードを更新したら、それらをドキュメントツリーに一度に追加します

9. イベント委任の理由は何ですか?

イベント委任、つまりイベント バブリング メカニズムを使用すると、イベントが要素オブジェクトの親要素にバインドされます。

たとえば、行プロンプト効果を持つ複数行のテーブルでは、ページ区切りによってテーブルが変更されます。

分析: 上記の項目 7 を考慮すると、変更された行要素ごとにイベントをバインドするためにパフォーマンスを犠牲にすることはできません。

解決策:イベントをテーブルの親要素にバインドし、e.target (e.secElement) のノード タイプに基づいて操作を実行します。

<<:  docker-compose を使用して mongodb と mysql を構築する詳細なプロセス

>>:  HTML 縦列表示テキストを使用してテキストを縦列で表示します

推薦する

MySQLのメモリ使用量を表示する方法の詳細な説明

序文この記事では主にMySQLのメモリ使用量に関する関連コンテンツを紹介し、皆さんの参考と学習のため...

単一行関数と文字計算日付プロセス制御を説明する MySQL の例

目次1. キャラクター機能1. ケースコントロール機能2. キャラクターコントロール機能2. 数学関...

Vue ソースコード学習でレスポンシブ性を実装する方法

目次序文1. レスポンシブシステムの重要な要素1. データの変更を監視する方法2. 依存関係を収集す...

HTMLで特殊記号を表示する(特殊文字対応表付き)

問題の再現HTML を使用して編集する場合、特殊記号によってエラーが表示されることが多く、極端な場合...

HTML 5 スタイルシートのリセット

この CSS リセットは、Eric Meyers の CSS リセットに基づいて変更されており、特に...

CSS で水平方向と垂直方向に中央揃えする 10 の方法を教えます (要約)

面接には必需品、仕事でも必ず使います。うーん、誰でも分かるでしょう。これ以上何も言わずに、要約とレン...

ウェブページでコンテンツを引用するためによく使われるHTMLタグをマスターする

長い引用には blockquote を、短い引用には q を、参考文献には cite を使用します。...

JavaScript BOM の説明

目次1. BOMの紹介1. JavaScriptは3つの部分から構成される2.ウィンドウオブジェクト...

Linux で NFS のワンクリック展開を実装する方法

サーバー情報管理サーバー: m01 172.16.1.61サーバー: nfs01 172.16.1....

Windows 2016 Server セキュリティ設定

目次システムアップデート構成Windows Update サーバーの変更自動更新を有効にして許可する...

MySQLの空の値とnull値の違いを知っていますか?

序文最近、友人がSQLを書くときにnull値を判定する方法が間違っていて、プログラム内のデータにエラ...

nginxのアップストリーム設定と機能の詳細な説明

設定例 アップストリームバックエンド{ サーバー backend1.example.com 重み=5...

MySQL学習エンジンの詳細な説明、説明、権限

エンジン導入InnodbエンジンInnodb エンジンは、データベース ACID トランザクションを...

docker-machineの使い方の詳しい説明

Docker-machineはDockerが公式に提供しているDocker管理ツールです。これは d...

Facebook 出会い系サイトデザインのユーザー エクスペリエンス分析

<br />関連記事: Facebookの情報アーキテクチャの分析 元記事: http:...