paint-brush
フロントエンド開発のベスト プラクティス@yantsishko
33,456 測定値
33,456 測定値

フロントエンド開発のベスト プラクティス

Yan Tsishko6m2022/12/23
Read on Terminal Reader

長すぎる; 読むには

フロントエンド開発には、Web サイトの視覚的およびインタラクティブな側面の作成が含まれます。コードが最適化され、保守可能で、業界標準に準拠していることを確認することは、シームレスなユーザー エクスペリエンスを作成するために不可欠です。ここでは、フロントエンド プロジェクトに取り組む際に留意すべきベスト プラクティスをいくつか紹介します。
featured image - フロントエンド開発のベスト プラクティス
Yan Tsishko HackerNoon profile picture

フロントエンド開発には、ユーザーが表示して操作する Web サイトまたはアプリケーションの視覚的でインタラクティブな側面の作成が含まれます。


フロントエンド コードが最適化され、保守可能であり、業界標準に準拠していることを確認することは、シームレスなユーザー エクスペリエンスを作成するために不可欠です。フロントエンド プロジェクトで作業する際に留意すべきいくつかのベスト プラクティスを次に示します。


  1. セマンティック HTML タグ: セマンティック HTML タグを使用すると、コードのアクセシビリティと読みやすさが向上します。たとえば、 divタグを使用してヘッダーを表す代わりに、 headerタグを使用できます。これにより、コンテンツの意味が増し、スクリーン リーダーが解釈しやすくなります。
 <!-- Not semantic --> <div class="header"> <h1>Welcome to my website</h1> </div> <!-- Semantic --> <header> <h1>Welcome to my website</h1> </header>


  1. CSS プリプロセッサー: SASS や LESS などの CSS プリプロセッサーを使用すると、通常の CSS では利用できない高度な機能やテクニックを CSS で使用できます。たとえば、変数、ミックスイン、およびネストされたルールを使用して、スタイルをより整理し、保守しやすくすることができます。
 /* Css */ .btn { color: #ffffff; background-color: #000000; font-size: 16px; border-radius: 5px; } /* Sass */ $primary-color: #000000; $secondary-color: #ffffff; $font-size: 16px; $border-radius: 5px; .btn { color: $secondary-color; background-color: $primary-color; font-size: $font-size; border-radius: $border-radius; }


  1. js、CSS、画像にコンテンツ配信ネットワーク (CDN) を使用する: CDN は、ユーザーの地理的な場所に基づいてコンテンツを配信するサーバーのネットワークです。 CDN を使用すると、ユーザーとサーバー間の距離が短くなるため、パフォーマンスが向上します。また、ファイルのキャッシュも可能です。
 <!-- Not using a CDN --> <script src="/scripts/jquery.js"></script> <!-- Using a CDN --> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>


  1. 画像やその他のアセットを最適化する: 画像やその他のアセットを最適化すると、Web サイトのパフォーマンスと速度を向上させることができます。これは、画像の圧縮、適切な画像ファイル形式の使用、画像の遅延読み込みなどの手法によって実行できます。
 <img src="compressed-image.jpg" alt="A compressed image" loading="lazy">


  1. レスポンシブ画像: レスポンシブ画像は、さまざまな画面サイズやデバイスに合わせて適切にスケーリングされた画像です。これは、 imgタグのsrcset属性とsizes属性を使用して行うことができます。
 <img srcset="image-small.jpg 500w, image-medium.jpg 1000w, image-large.jpg 1500w" sizes="(max-width: 500px) 500px, (max-width: 1000px) 1000px, 1500px" src="image-large.jpg" alt="An image" >


  1. ベクター グラフィック: ベクター グラフィックは、ピクセルではなくポイントとパスによって定義される画像であり、品質を損なうことなく任意のサイズにスケーリングできます。これにより、特にさまざまなサイズで表示されるグラフィックの場合に、より効率的に使用できます。
 <svg width="200" height="200"> <circle cx="100" cy="100" r="50" fill="#000000" /> </svg>


  1. 画像スプライトを使用する: 画像スプライトは複数の小さな画像を含む単一の画像であり、CSS のbackground-positionプロパティを使用して表示できます。これにより、画像のロードに必要な HTTP リクエストの数が減り、パフォーマンスが向上します。
 .icon1 { background-image: url('icons.png'); background-position: 0 0; } .icon2 { background-image: url('icons.png'); background-position: -20px 0; }


アクセシビリティ原則

アクセシビリティの原則を順守することで、Web サイトをより包括的で、障害を持つ人々にとって使いやすくすることができます。これは、画像に代替テキストを提供する、適切な見出し構造を使用する、適切なフォーム ラベルを追加するなどの手法によって実現できます。


  1. aria-labelは、可視ラベルを持たない要素にラベルを提供します。これは、テキスト ラベルのないボタンやアイコンなどの要素に役立ちます。
 <button aria-label="Search"><i class="search"></i></button>


  1. aria-requiredは、必須のフォーム フィールドを示します。 aria-required属性を使用して、フォーム フィールドが必須であることを示すことができます。これは、フォームを送信するためにフィールドに入力する必要があることをユーザーと支援技術に警告するのに役立ちます。
 <label for="name">Name</label> <input type="text" id="name" name="name" required aria-required="true">


  1. aria-hidden属性により、要素を支援技術から隠すことができます。これは、重要な情報を伝えない装飾要素に役立ちます。
 <img src="decorative.jpg" alt="" aria-hidden="true">


  1. aria-expandedにより、折りたたみ可能な要素の状態を示すことができます。 aria-expanded属性を使用して、ドロップダウン メニューなどの折りたたみ可能な要素が現在展開されているか折りたたまれているかを示すことができます。これは、要素の現在の状態をユーザーと支援技術に警告するのに役立ちます。
 <button aria-expanded="false" aria-controls="menu">Menu</button> <ul id="menu" aria-hidden="true"> <li>Option 1</li> <li>Option 2</li> <li>Option 3</li> </ul>


  1. コンテンツの更新を発表するaria-livearia-live属性を使用して、要素のコンテンツが非同期的に更新される可能性があることを示すことができます。これは、新しいメッセージや通知など、支援技術に対するコンテンツの更新をアナウンスするのに役立ちます。
 <div id="notifications" aria-live="polite"> <p>You have 1 new message</p> </div>


  1. aria-describedby使用すると、要素の説明を提供できます。 aria-describedby属性を使用して、現在の要素の説明を提供する要素を指定できます。これは、フォーム フィールドやその他のインタラクティブな要素に追加のコンテキストや指示を提供するのに役立ちます。
 <label for="email">Email address</label> <input type="email" id="email" name="email" aria-describedby="email-description"> <p id="email-description">Please enter your email address</p>

JavaScript で最適化する

JavaScript は強力で柔軟なプログラミング言語ですが、リソースを大量に消費する言語でもあります。したがって、JavaScript コードが効率的に実行され、Web サイトやアプリケーションの全体的なパフォーマンスに影響を与えないように、JavaScript コードを最適化することが重要です。


JavaScript のパフォーマンスを最適化するためのヒントをいくつか紹介します。


  • コードを縮小する: 不要な空白、コメント、その他の不要な文字を削除すると、JavaScript ファイルのサイズを縮小し、読み込み時間を短縮できます。


  • JavaScript コンパイラ: Babel や TypeScript などの JavaScript コンパイラは、コードをより効率的な形式に変換して最適化するのに役立ちます。


  • メイン スレッドのブロックを回避する: メイン スレッドは、ユーザー インタラクションの処理とページのレンダリングを担当するため、実行時間の長いタスクやリソースを大量に消費するタスクでメイン スレッドをブロックしないようにすることが重要です。代わりに、Web ワーカーまたは非同期関数を使用して、これらのタスクを他のスレッドにオフロードすることを検討してください。


  • コード分割を使用すると、JavaScript コードを必要に応じてロードできる小さなチャンクに分割できます。これにより、最初にロードして解析する必要があるコードの量が減るため、パフォーマンスが向上します。 Webpack や Rollup などのツールを使用して、コード分割を実装できます。


  • 遅延読み込みを使用すると、必要になるまでコンテンツの読み込みを遅らせることができます。これにより、最初にロードする必要があるデータの量が減るため、パフォーマンスが向上します。 IntersectionObserver API を使用して遅延読み込みを実装できます。

 // Lazy loading with IntersectionObserver const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { // Load content observer.unobserve(entry.target); } }); }); document.querySelectorAll('[data-lazy]').forEach((element) => { observer.observe(element); });


  • キャッシュを使用すると、データをブラウザに保存できるため、サーバーから再度取得する必要なく再利用できます。これにより、実行する必要があるネットワーク要求の数が減るため、パフォーマンスが向上します。 Cache APIを使用してキャッシュを実装できます。
 if ('caches' in window) { caches.open('my-cache').then((cache) => { cache.add('/data.json').then(() => { console.log('Data added to cache'); }); }); }


  • パフォーマンス監視ツール: パフォーマンス監視ツールを使用すると、Web サイトのパフォーマンスを追跡し、潜在的な問題を特定できます。これにより、Web サイトのパフォーマンスを最適化し、ユーザー エクスペリエンスを向上させることができます。一般的なツールには、Lighthouse や SpeedCurve などがあります。


  • Linting ツール: ESLint として、コードのエラーをチェックして改善を提案し、コードの一貫性を確保し、ベスト プラクティスに従っていることを確認します。

結論

フロントエンド開発には、Web サイトのパフォーマンスとユーザー エクスペリエンスの向上に役立つさまざまなプラクティスとテクニックが含まれます。


従うことができるベスト プラクティスには、画像やその他のアセットの最適化、アクセシビリティ原則の順守、JavaScript の最適化などがあります。これらのベスト プラクティスに従うことで、優れたユーザー エクスペリエンスを提供する高品質でパフォーマンスの高い Web サイトを構築できます。