Javascript优化(文件瘦身)

作者:Grace 来源:Grace 时间:2008-06-02 13:20:00 

最近一直在研究 Javascript 相关的技术。在《Javascript 高级程序设计》有篇章节着重阐述了优化 Javascript 代码的重要性。相信有很多的 Javascript 开发人员在开发的同时或多或少的会接触到此类的问题。

在大部分情况下,代码的优化并不是实际开发中所需要着重的部分。但是一旦代码完成了以后,开发者总是期待自己的代码能够越短越高效越好。结合从书中获得的知识以及本人实际开发过程中的经验,下面说明本人所采取的一些花招(也算是照本宣科一下)。

前言

相比脚本语言,编译型的语言并不需要太关心优化问题。在极大的程度上,编译时编译器都会之行优化操作。比如所有的变量、函数、对象等等都会替换成只有处理器才能理解的符号和指针(就是通常所指的可执行文件)。其他的脚本语言也并不需要过分在意文件的大小问题,但是 Javascript 则不同。

因为它首先要通过从服务器端下载源代码,然后再由客户端的浏览器执行。因此,Javascript 代码的速度被分割成两部分:下载时间(取决于文件的大小)和执行速度(取决于代码算法)。这篇主要讨论的是 Javascript 的下载时间优化,也就是如何尽可能的缩小 Javascript 文件本身的容量。

在这里要记住的一个数字是 1160,这是能放入单个 TCP/IP 包中的字节数。所以,最好的期望值是能将每个 Javascript 文件保持在 1160 字节一下,以获取最优的下载时间。

删除注释

这似乎是是废话,不过很多开发人员都会忘记。在实际生产环境中,脚本中的注释都应该删除。在开发期间注释相当的重要,它可以帮助团队理解代码。但在实际生产环境中,注释会明显使脚本文件体积变大。删除它们并不会给脚本实际运行带来任何的影响。

删除制表符和空格

具有良好缩进和空格的代码通常都具有良好的可读性。但是浏览器并不需要这些额外的制表符和空格,所以最好删除它们。当然也不要忘记函数参数,赋值语句以及比较操作之间的空格。比如

function showMeTheMoney(money)
{
    if (!money) {
        return false;
    } else {
        ...
    }
}

可以优化成

function showMeTheMoney(money){if(!money){reutrn false;}else{...}}

这样可以减少部分容量。

删除所有的换行

有许多关于在 Javascript 中换行应该存在的思考,但底线都是换行要增加代码的可读性。但过分的换行也会造成代码体积的增加。

可能处于某种原因而不能删除换行符,这样则要保证文件是 Unix 格式的。因为 Windows、Mac 格式的换行符用两个字符表示换行;Unix 仅用一个。所以将文件转换成 Unix 格式也可以节约一些字节数。

替换变量名

这可能是最无聊的一种做法,这通常不是手工完成的。毕竟变量的名称对解释器来说毫无意义(只是对开发人员来说会更友好一些),在生产环境中将描述性的变量名替换成更简单、更短的名称也可以缩减一部分体积。比如上述的代码可以缩减成:

function sm(m){if(!m){reutrn false;}else{...}}

这样虽然看起来会比较的头痛,不过实际执行效果是一样的。

使用工具

实际使用上述的方法可能会有一些困难,幸好有现成的外部工具能完成这些步骤。下面简单的介绍几个:

JS代码的格式化和压缩

ECMAScript Cruncher:http://saltstorm.net/depo/esc/

JSMin(The JavaScript Minifier): http://www.crockford.com/javascript/jsmin.html

Online JavaScript Compressor.:http://dean.edwards.name/packer/

我猜你会有兴趣看下这篇文章。

标签:代码,优化,Javascript,文件
0
投稿

猜你喜欢

  • d3.js实现简单的网络拓扑图实例代码

    2024-05-09 10:19:58
  • matplotlib.pyplot画图 图片的二进制流的获取方法

    2021-03-25 09:38:00
  • 上传图片js判断图片尺寸和格式兼容IE

    2024-04-10 10:48:37
  • mysql使用LOAD语句批量录入数据

    2010-03-18 16:19:00
  • C语言实现访问及查询MySQL数据库的方法

    2024-01-12 18:01:31
  • 分享6 个值得收藏的 Python 代码

    2022-12-31 05:09:57
  • Microsoft SQL Server 2012 数据库安装图解教程

    2024-01-13 18:20:25
  • python里读写excel等数据文件的6种常用方式(小结)

    2021-04-09 08:11:52
  • Node.js的非阻塞I/O、异步与事件驱动介绍

    2024-05-13 09:35:02
  • python 机器学习之支持向量机非线性回归SVR模型

    2022-06-17 20:23:55
  • Python新手们容易犯的几个错误总结

    2021-06-22 12:19:54
  • Sql 批量查看字符所在的表及字段

    2024-01-15 02:53:36
  • JS画5角星方法介绍

    2024-05-13 09:06:36
  • 视觉直观感受若干常用排序算法

    2022-05-09 06:45:24
  • Python使用pip安装报错:is not a supported wheel on this platform的解决方法

    2022-12-12 09:07:09
  • Python+Turtle实现绘制可爱的小仓鼠

    2022-09-16 20:52:28
  • HTTP长连接与短连接使用方法及测试详解

    2023-05-08 16:15:25
  • python数字图像处理像素的访问与裁剪示例

    2023-05-12 11:07:20
  • PS中执行N遍选定动作的脚本

    2008-02-22 21:33:00
  • 用python生成mysql数据库结构文档

    2021-05-15 12:04:33
  • asp之家 网络编程 m.aspxhome.com