フロントエンド開発には、ユーザーが表示して操作する Web サイトまたはアプリケーションの視覚的でインタラクティブな側面の作成が含まれます。
フロントエンド コードが最適化され、保守可能であり、業界標準に準拠していることを確認することは、シームレスなユーザー エクスペリエンスを作成するために不可欠です。フロントエンド プロジェクトで作業する際に留意すべきいくつかのベスト プラクティスを次に示します。
div
タグを使用してヘッダーを表す代わりに、 header
タグを使用できます。これにより、コンテンツの意味が増し、スクリーン リーダーが解釈しやすくなります。 <!-- Not semantic --> <div class="header"> <h1>Welcome to my website</h1> </div> <!-- Semantic --> <header> <h1>Welcome to my website</h1> </header>
/* 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; }
<!-- 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>
<img src="compressed-image.jpg" alt="A compressed image" loading="lazy">
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" >
<svg width="200" height="200"> <circle cx="100" cy="100" r="50" fill="#000000" /> </svg>
background-position
プロパティを使用して表示できます。これにより、画像のロードに必要な HTTP リクエストの数が減り、パフォーマンスが向上します。 .icon1 { background-image: url('icons.png'); background-position: 0 0; } .icon2 { background-image: url('icons.png'); background-position: -20px 0; }
アクセシビリティの原則を順守することで、Web サイトをより包括的で、障害を持つ人々にとって使いやすくすることができます。これは、画像に代替テキストを提供する、適切な見出し構造を使用する、適切なフォーム ラベルを追加するなどの手法によって実現できます。
aria-label
は、可視ラベルを持たない要素にラベルを提供します。これは、テキスト ラベルのないボタンやアイコンなどの要素に役立ちます。 <button aria-label="Search"><i class="search"></i></button>
aria-required
は、必須のフォーム フィールドを示します。 aria-required
属性を使用して、フォーム フィールドが必須であることを示すことができます。これは、フォームを送信するためにフィールドに入力する必要があることをユーザーと支援技術に警告するのに役立ちます。 <label for="name">Name</label> <input type="text" id="name" name="name" required aria-required="true">
aria-hidden
属性により、要素を支援技術から隠すことができます。これは、重要な情報を伝えない装飾要素に役立ちます。 <img src="decorative.jpg" alt="" aria-hidden="true">
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>
aria-live
。 aria-live
属性を使用して、要素のコンテンツが非同期的に更新される可能性があることを示すことができます。これは、新しいメッセージや通知など、支援技術に対するコンテンツの更新をアナウンスするのに役立ちます。 <div id="notifications" aria-live="polite"> <p>You have 1 new message</p> </div>
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 コードが効率的に実行され、Web サイトやアプリケーションの全体的なパフォーマンスに影響を与えないように、JavaScript コードを最適化することが重要です。
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 サイトを構築できます。