paint-brush
前端开发的最佳实践经过@yantsishko
33,421 讀數
33,421 讀數

前端开发的最佳实践

经过 Yan Tsishko6m2022/12/23
Read on Terminal Reader

太長; 讀書

前端开发涉及创建网站的视觉和交互方面。确保您的代码经过优化、可维护并遵循行业标准对于创建无缝的用户体验至关重要。以下是在处理前端项目时要牢记的一些最佳实践。
featured image - 前端开发的最佳实践
Yan Tsishko HackerNoon profile picture

前端开发涉及创建用户看到并与之交互的网站或应用程序的视觉和交互方面。


确保您的前端代码经过优化、可维护并遵循行业标准对于创建无缝的用户体验至关重要。以下是在处理前端项目时要牢记的一些最佳实践:


  1. 语义 HTML 标签:使用语义 HTML 标签有助于提高代码的可访问性和可读性。例如,您可以使用header标签代替使用div标签来表示标题。这为内容赋予了更多意义,并使屏幕阅读器更容易理解。
 <!-- Not semantic --> <div class="header"> <h1>Welcome to my website</h1> </div> <!-- Semantic --> <header> <h1>Welcome to my website</h1> </header>


  1. CSS 预处理器:CSS 预处理器,如 SASS 或 LESS,允许使用 CSS 中的高级功能和技术,而这些功能和技术在 vanilla 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. 将内容分发网络 (CDN) 用于 js、CSS 和图像: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. 优化图像和其他资产:优化图像和其他资产有助于提高网站的性能和速度。这可以通过压缩图像、使用适当的图像文件格式和延迟加载图像等技术来实现。
 <img src="compressed-image.jpg" alt="A compressed image" loading="lazy">


  1. 响应式图像:响应式图像是针对不同屏幕尺寸和设备适当缩放的图像。这可以通过使用img标签上的srcsetsizes属性来完成。
 <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; }


无障碍原则

遵守可访问性原则有助于使您的网站更具包容性,并且更易于残障人士使用。这可以通过诸如为图像提供替代文本、使用适当的标题结构以及添加适当的表单标签等技术来实现。


  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-live宣布更新内容。 aria-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 代码以确保其高效运行并且不会影响您的网站或应用程序的整体性能非常重要。


以下是优化 JavaScript 性能的一些技巧:


  • 精简代码:删除不必要的空格、注释和其他不必要的字符有助于减小 JavaScript 文件的大小并缩短加载时间。


  • JavaScript 编译器:JavaScript 编译器(例如 Babel 或 TypeScript)可以通过将代码转换为更高效的格式来帮助优化代码。


  • 避免阻塞主线程:主线程负责处理用户交互和呈现页面,因此避免用长时间运行或资源密集型任务阻塞它很重要。相反,考虑使用网络工作者或异步函数将这些任务卸载到其他线程。


  • 代码拆分允许您将 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'); }); }); }


  • 性能监控工具:性能监控工具可以跟踪网站的性能并识别潜在问题。这有助于优化网站性能并改善用户体验。一些流行的工具包括 Lighthouse 和 SpeedCurve。


  • Linting工具:作为 ESLint,检查代码是否有错误并提出改进建议,有助于确保代码一致并遵循最佳实践。

结论

前端开发涉及广泛的实践和技术,有助于提高网站的性能和用户体验。


您可以遵循的一些最佳实践包括优化图像和其他资产、遵循可访问性原则以及优化 JavaScript。通过遵循这些最佳实践,您可以构建高质量且性能良好的网站,从而提供出色的用户体验。