《Web前端开发最佳实践》——2.5 Web前端代码开发和调试

简介:

本节书摘来自华章计算机《Web前端开发最佳实践》一书中的第2章,第2.5节,作者:党 建 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.5 Web前端代码开发和调试

2.5.1 Web前端集成开发环境
很多集成开发环境(IDE)都集成了前端代码IDE,如Visual Studio、Eclipse等,但在纯粹的前端开发中,这些IDE显得不够强大而且不够轻量。这里推荐两款强大的IDE:Aptana Studio和WebStorm。
Aptana Studio是一个开源的Web开发工具,有非常强大的JavaScript编辑器和调试器(见图2-4)。它的主要特性包括:


31f7acec86c43d946b74225d08ebad97a9fb6e2e
  • JavaScript函数、HTML及CSS的Code Assist功能。
  • 显示JavaScript、HTML及CSS代码的结构。
  • 代码语法错误提示。
  • 调试JavaScript代码。
  • 支持流行的AJAX框架的智能提示:jQuery、Prototype、YUI、Ext JS等。

WebStorm是JetBrains专门为Web开发人员提供的一款商业的JavaScript开发工具(见图2-5)。其功能和Aptana Studio类似,主要有智能代码提示、代码格式化、代码调试、代码结构展示、代码重构等。


040cde7cdfb73c132885690440b04b9ff9fb6c92

2.5.2 Web前端代码调试
各主流浏览器都自带的有调试工具,如IE浏览器自带的IE Dev Toolbar,Chrome浏览器自带的Developer Tools,Firefox浏览器插件Firebug,Safari浏览器自带的Develop系列工具。这些工具的功能类似,都可以查看HTML、CSS代码,动态更改页面的HTML和CSS代码并实时查看修改效果,也可以调试JavaScript代码的执行。这些自带的工具基本可以满足前端的代码调试工作。
图2-6展示的是Chrome自带的Developer Tools。


8e26a263817e9aebf1c7cf67df71280bd040f2d9

2.5.3 Web前端性能分析
常用的Web前端性能分析工具有YSlow、PageSpeed及各浏览器自带的开发工具等。YSlow是由雅虎公司开发的一款免费工具,主要的特性有:

  • 基于不同的规则评定网站整体性能评分。
  • 给出提高网页性能的建议。
  • 统计页面加载的组件。
  • 页面的统计信息视图。
  • 相关性能分析的工具集,如JSLint、Smush.it等。

YSlow可以以插件的形式安装在多个浏览器上,如Firefox、Chrome、Opera、Safari及一些移动浏览器等。
图2-7所示为在Firefox浏览器中YSlow作为Firebug的一部分。
YSlow的性能分析基于23条规则,这23条规则是雅虎公司性能改进团队制定的34条提高Web性能“军规”中的一部分。YSlow性能评分也是针对这23条规则逐项评分的。其官方网站上列出了这23条规则及具体说明,值得前端开发者仔细阅读和学习。
PageSpeed出自于Google公司,也是一款免费的工具,提供了在线工具和浏览器插件两种方式。功能和YSlow类似,只是检查的规则稍有不同。


339bbcbd48e9d32824f135d1f308ed57da14591e

各主流浏览器自带的开发工具也可以辅助检测网页的性能,比如Chrome的开发工具。Chrome的开发工具中有Network、Timeline、Profiles和Audits 4个菜单项,Network中可以查看各资源请求和下载所用的时间,Timeline中可以查看网页渲染和交互过程中各步骤所花费的时间,从资源的加载到JavaScript的解析执行、样式的应用及绘制,Profiles中可以查看网页的CPU及内存占有情况报告,Audits中提供了各种资源和配置优化的建议和未使用CSS规则的列表。这4项功能会极大地帮助开发者检测并优化网页性能。
2.5.4 代码和资源的压缩与合并
在网站发布时,一般会压缩前端HTML、CSS、JavaScript代码及用到的资源文件(主要是图片文件),目的是加快文件在网络中的传输,让网页以更快的速度展现。当然,CDN分发、缓存等方式也是加快代码或资源文件传输的方式,但压缩代码和资源文件是最简单有效的手段之一。代码压缩的优点逐渐得到了大部分开发者的认可,并已经成为Web前端开发中不可或缺的一个步骤。以下是代码和资源压缩的具体实践方法。
(1)Web服务器开启Gzip压缩
在HTTP中允许客户端可以选择从服务器上下载压缩的内容,Gzip就是其中一种支持的格式。Gzip是一种常见的压缩算法,可以参考维基百科中关于这种算法的详细介绍。目前,Gzip已经得到了大部分的主流Web服务器(比如IIS、Nginx、Apache、Lighttpd等)和主流的浏览器的支持。服务器配置人员可以查看服务器对应的配置文档,开启Gzip压缩。服务器启用了Gzip压缩后,代码文件有更小的体积,尤其是文本文件。
Web服务器开启Gzip压缩后,会在Response的header中增加Content-Encoding:gzip。可以通过检查此header项来判断服务器是否开启了Gzip压缩。
(2)JavaScript代码压缩
JavaScript压缩的原理一般是去掉多余的空格和回车、替换长变量名、简化一些代码写法等。JavaScript代码压缩工具很多,有在线工具、应用程序、编辑器插件。其中使用最多的是UglifyJS、YUI Compressor和Closure Compiler。UglifyJS不仅仅是一个压缩工具,同时具有JavaScript语法分析和代码美化功能,包括代码缩减、代码转化等。如:

var a = 10; var b = 20; ==> var a=10,b=20;
if (foo) bar(); else baz(); ==> foo?bar():baz();
if (foo) bar(); ==> foo&&bar();
new Array(1, 2, 3, 4)  => [1,2,3,4]

Closure Compiler出自Google公司,功能和UglifyJS类似,只是压缩的算法不同。
YUI Compressor出自雅虎公司,此工具不同于以上两个工具。UglifyJS和Closure Compiler不仅是Compressor,同时还是Compiler,会针对代码进行优化,而YUI Compressor仅仅是压缩。
这3个工具都有对应的在线版本,也可以本地安装后使用命令行方式。如果不想手动压缩代码,则可以选择编辑器自动化集成方式,比如在WebStorm编辑器中配置File Watchers。
(3)CSS代码压缩
CSS代码压缩原理和JavaScript代码压缩的原理类似,也是去掉不必要的空格、回车、注释等,并同时优化合并一些CSS规则定义,让规则更简洁。比如下面的代码:

background-color:#fff;
background-image: url(image.gif);
background-repeat:no-repeat; 
background-position:?top left;

会优化为:

background:?#fff url(image.gif) no-repeat top left;

CSS代码压缩工具也有在线、本地应用程序和编译器插件。比较有名的在线工具是CSS Compressor,压缩时可以选择各种配置模式。自动化工具可以选择上面提到的JavaScript压缩工具YUI Compressor,它也可以压缩CSS代码。使用相同的工具压缩JavaScript和CSS代码,省去了安装多个工具的麻烦。
(4)HTML代码压缩
压缩HTML代码的争议很大,反对的一方觉得压缩的作用不大,不像压缩JavaScript和CSS代码,压缩HTML代码仅仅是去掉空格、回车、注释等无关字符,并不会简化HTML代码本身,所以觉得在服务器开启Gzip就足够了。另外,压缩HTML代码也有一些限制,比如网站开发时,HTML页面并不是单纯的HTML代码,而是和服务器端脚本混合在一起,比如PHP、ASP、JSP、ASP.NET等。压缩类似这些页面时,压缩的规则就比较复杂,也容易破坏代码。目前可以使用的HTML压缩工具并不多,使用最多的是这款工具:HtmlCompressor。
使用此工具的时候需要仔细调查和测试,避免压缩工具破坏页面的代码。
(5)图片资源压缩
除了代码的压缩外,网页中使用最多的资源文件就是图片。在一般的网站中,图片资源所占的比重还是挺大的。图片压缩工具主要是在线工具和本地应用程序,还没有一款使用较为广泛的编辑器插件可用。还好,在一般项目中,图片的变化并不是很大,图片的自动化压缩工具的需求并不是很迫切。
图片压缩工具也很多,以在线工具居多。在线工具中,推荐使用TinyPNG工具压缩PNG格式图片,推荐使用JPEGmini压缩JPG格式图片。本地应用程序,则推荐ImageOptim,这是一款强大的工具,集成了多种压缩工具,可以压缩多种格式(如PNG、JPEG及GIF动画)的图片,支持拖放操作,使用也非常方便。
以上就是网站发布时可以使用的各种资源压缩工具。除了在项目中使用合适的压缩工具之外,何时压缩代码也很重要。因为压缩后的代码会影响代码的调试,使得开发者不易确定出错代码的位置,调试JavaScript代码时也不易设置断点,所以推荐在开发后期,甚至是在网站的发布阶段做代码和资源的压缩。如果放在网站发布阶段压缩,则开发者在开发过程中不需要考虑代码压缩的问题,方便了开发者的开发与调试。发布阶段压缩代码的方案也很成熟,比如使用ANT工具。ANT是一个基于Java的构建工具,在这个工具中可以构建代码和资源压缩的任务:使用 YUI 压缩程序合并和压缩 JavaScript和CSS,使用jpegtran和OptiPNG优化JPG和PNG文件,使用HtmlCompressor压缩HTML及移除调试代码。
目前比较流行的前端自动化构建工具Grunt也可以集成代码和资源的压缩工具。在Grunt的插件列表页面上,有很多的压缩代码和资源文件的插件可用。比如,压缩JavaScript的grunt-contrib-uglify插件、压缩CSS代码的grunt-contrib-cssmin插件及压缩图片的grunt-contrib-imagemin插件等。

相关文章
|
11月前
|
并行计算 前端开发 JavaScript
Web Worker:让前端飞起来的隐形引擎
在现代 Web 开发中,前端性能优化是一个至关重要的课题,尤其是对于计算密集型的应用,如图像处理、视频处理、大规模数据分析等任务。单线程的 JavaScript 引擎常常成为性能瓶颈,导致应用变得迟缓。Web Worker,作为一种强大的技术,使得前端能够在后台进行并行计算,从而实现高效的任务处理,不影响主线程的运行和用户的交互体验。
856 108
|
9月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
640 4
|
11月前
|
JavaScript 前端开发 Java
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
845 72
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。
|
前端开发 JavaScript Shell
鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析
本文为鸿蒙开发者整理了Web性能优化的实战案例解析,结合官方文档深度扩展。内容涵盖点击响应时延核心指标(≤100ms)、性能分析工具链(如DevTools时间线、ArkUI Trace抓取)以及高频优化场景,包括递归函数优化、网络请求阻塞解决方案和setTimeout滥用问题等。同时提供进阶技巧,如首帧加速、透明动画陷阱规避及Web组件初始化加速,并通过优化前后Trace对比展示成果。最后总结了快速定位问题的方法与开发建议,助力开发者提升Web应用性能。
|
JSON 开发框架 自然语言处理
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)
本文主要介绍了应用开发中的三大核心内容:生命周期管理、资源限定与访问以及多语言支持。在生命周期部分,详细说明了应用和页面的生命周期函数及其触发时机,帮助开发者更好地掌控应用状态变化。资源限定与访问章节,则聚焦于资源限定词的定义、命名规则及匹配逻辑,并阐述了如何通过 `$r` 引用 JS 模块内的资源。最后,多语言支持部分讲解了如何通过 JSON 文件定义多语言资源,使用 `$t` 和 `$tc` 方法实现简单格式化与单复数格式化,为全球化应用提供便利。
393 104
|
JavaScript 前端开发 API
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
本文介绍了HarmonyOS应用开发中的HML、CSS和JS语法。HML作为标记语言,支持数据绑定、事件处理、列表渲染等功能;CSS用于样式定义,涵盖尺寸单位、样式导入、选择器及伪类等特性;JS实现业务逻辑,包括ES6语法支持、对象属性、数据方法及事件处理。通过具体代码示例,详细解析了页面构建与交互的实现方式,为开发者提供全面的技术指导。
440 104
|
开发框架 编解码 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(一)
该文档详细介绍了一个兼容JS的类Web开发范式的方舟开发框架,涵盖概述、文件组织、js标签配置及app.js等内容。框架采用HML、CSS、JavaScript三段式开发方式,支持单向数据绑定,适合中小型应用开发。文件组织部分说明了目录结构、访问规则和媒体文件格式;js标签配置包括实例名称、页面路由和窗口样式信息;app.js则描述了应用生命周期与对象管理。整体内容旨在帮助开发者快速构建基于方舟框架的应用程序。
459 102
|
XML 安全 前端开发
一行代码搞定禁用 web 开发者工具
在如今的互联网时代,网页源码的保护显得尤为重要,特别是前端代码,几乎就是明文展示,很容易造成源码泄露,黑客和恶意用户往往会利用浏览器的开发者工具来窃取网站的敏感信息。为了有效防止用户打开浏览器的 Web 开发者工具面板,今天推荐一个不错的 npm 库,可以帮助开发者更好地保护自己的网站源码,本文将介绍该库的功能和使用方法。 功能介绍 npm 库名称:disable-devtool,github 路径:/theajack/disable-devtool。从 f12 按钮,右键单击和浏览器菜单都可以禁用 Web 开发工具。 🚀 一行代码搞定禁用 web 开发者工具 该库有以下特性: • 支持可配
1539 22