在部署之前,您对JavaScript代码做了什么?

在部署之前,您对JavaScript代码做了什么?,javascript,deployment,release-management,minify,Javascript,Deployment,Release Management,Minify,您在部署过程中是否有缩小JS的步骤?您是否有任何类型的JavaScript预处理器,允许您在comments和console.log中留下,然后自动删除它们?您的JavaScript机器是由GWT还是脚本生成的?您是否使用ANT或其他工具来自动化部署 我看到很多JavaScript看起来像是直接从编辑器中出来的,带有大量空白和注释。这其中有多少是因为不关心已部署代码的状态,又有多少是因为开放web的精神?一个词-检查一下它是一个控制台应用程序,您可以使用它缩小(去掉注释、空白等)并混淆javas

您在部署过程中是否有缩小JS的步骤?您是否有任何类型的JavaScript预处理器,允许您在comments和console.log中留下,然后自动删除它们?您的JavaScript机器是由GWT还是脚本生成的?您是否使用ANT或其他工具来自动化部署


我看到很多JavaScript看起来像是直接从编辑器中出来的,带有大量空白和注释。这其中有多少是因为不关心已部署代码的状态,又有多少是因为开放web的精神?

一个词-

检查一下它是一个控制台应用程序,您可以使用它缩小(去掉注释、空白等)并混淆javascript文件

我通常检查它以确保它没有bug,然后将其打包/编码。

对于我们的一款产品,我们将所有Javascript文件连接在一起(大多数文件在大多数页面上使用,因此这对我们来说很有意义)并使用。这给了我们一个非常好的速度提升。

很多原因可能是因为不关心那些可能在连接速度较慢的机器上查看您的页面的人,并且假设每个人都有一条50Mbps的线路和3 Gig的RAM

作为.NET环境中构建过程的一部分,我们正在缩小(手写+插件、jQuery等)JS。没有预处理器,一旦时间允许,这是我们绝对应该做的事情

顺便说一下,我们没有使用console.log,因为这会破坏IE。相反,我们有一个简单的包装函数,类似于:

function log(stuff) {
    if (window.console && window.console.log) {
        console.log(stuff);
    }
};

它来自道格拉斯·克罗克福德。我们已经在Studio中将其连接为宏,以及一些更大项目的后期构建项目

点燃蜡烛,低声祈祷IE6错误,然后单击“开始”。这算吗?:)

  • 我不会缩小自己的javascript代码,因为文本倾向于gzip/压缩
  • 我会缩小一个非常大(比如说>100KB)的javascript库(但我可能不想使用这么大的库(或者只是提供我所使用的)
  • 我倾向于相信,许多javascript缩小(实际上)是为了实现某种javascript代码的(徒劳的)模糊化,而不是为了提高最终用户的性能。

    我的步骤包括:

  • 我使用安装了Javascript工具包的TextMate编写Javascript。这个JSLint在每次保存时都会显示我的文件,并在出现错误时通知我
  • 我使用自动连接各种Javascript文件
  • 我通过jsmin运行结果连接以生成一个简化版本
  • 我最终得到一个连接的lib.js文件和一个缩小的lib.min.js文件。一个用于开发,一个用于生产。TextMate命令有助于实现自动化


    我仍然在寻找一个很好的解决方案来实际(单元)测试我的脚本。

    我有一个PHP脚本,可以在服务器端执行此操作,并保留从源文件夹中提取的任何内容的缓存。

    FWIW,这里有一个有趣的小基准,介绍了各种最小化Javascript源代码的方法:

    简言之:

    • HTTP协议中的gzip压缩确实起到了作用(尽管您需要在服务器端支付CPU成本)
    • 缩小(删除空白/注释、更改变量名等)也有帮助,如果您希望获得最佳结果,请将其与gzip压缩一起使用
    • 基于js的解压器很可能是无用的-虽然您可能会得到更小的大小,但客户端上的CPU开销是巨大的。
    还有一个可以让您:-

    • 将缩小/文件合并到Visual Studio生成后事件中
    • 集成到TFS构建中(包括CI)
    • 如果您希望只在自己的代码中使用dll(例如动态缩小)

    我想分享一下我的js部署方法。看看这篇博文:

    这还包括在运行时(需要时)编译的代码(使用google的闭包编译器)


    感谢Guido

    大多数库已经从packer迁移到了带有gzip的minifier。Packer在代码解压时会占用宝贵的时间。如果您担心的是压缩率,那么本页将很好地概述一些工具使用一些最流行的javascript库实现的比率:。最近,从“最佳实践”的角度来看,我自己也在想这个问题。我的IT极客说web服务器应该处理压缩,而不是开发人员。我在mootools上做了一些廉价的评测,发现使用YUI或其他任何工具进行预压缩会产生比标准gzip略大的尺寸改进,而这正是web服务器将使用的。但是,这一差距值得为“开放网络的精神”所带来的麻烦和潜在的攻击吗?@Ben Dunlap:这就是你同时做minify和gzip的时候了。您可以使用生产构建脚本进行缩小,服务器会为您处理gzip。@dalbaeb,是的,我知道——这正是我正在测试的;对不起,如果不清楚的话。我获取了mootools的缩小版本并对其进行了gzip压缩,然后将结果与mootools原始版本的gzip进行了比较。差别是相当小的,所以我的问题是:如果web服务器无论如何都应该gzip所有响应,那么缩小响应会有什么好处?因为我知道缩小规模会带来什么损失:第三方读者的代码清晰性,以及我的时间(当我不得不更改发布代码时)。我想我正在做一个成本/收益分析。你通过缩减代码所获得的收益将取决于你有多少代码。即使使用较短的变量/函数名,有时也会减少总体大小和下载时间。我们这里说的是毫秒,没错。但用户等待的时间越少越好。此外,如果您只是为了生产而缩小规模,您仍然可以使用可读的“dev”版本。第三部分的澄清