16

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

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

4

13 回答 13

11

我通常用JSLint检查它以确保它没有错误,然后用YUI 压缩器对其进行打包/编码。

于 2009-06-04T19:01:29.120 回答
4

我的步骤包括:

  1. 我使用安装了 Javascript 工具包的 TextMate 编写 Javascript。这个 JSLint 是我每次保存时的文件,并在发生错误时通知我。
  2. 我使用Sprockets自动连接我的各种 Javascript 文件。
  3. 我通过 jsmin 运行生成的连接以生成缩小版本。

我最终得到一个连接的 lib.js 文件和一个缩小的 lib.min.js 文件。一个用于开发,一个用于生产。TextMate 命令有助于将这一切自动化。

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

于 2009-06-04T22:31:18.777 回答
2

查看YUI Compressor,它是一个控制台应用程序,您可以使用它来缩小(去除评论、空格等)并混淆您的 javascript 文件。

于 2009-06-04T19:00:32.743 回答
2

来自 Douglas Crockford 的JSMin 。我们已将它作为 Studio 中的宏以及我们一些较大项目的后期构建项目连接起来

于 2009-06-04T19:19:47.417 回答
2

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

http://www.ericmmartin.com/comparison-of-javascript-compression-methods/

简而言之:

  • HTTP 协议中的 gzip 压缩确实有所作为(尽管您需要在服务器端支付 CPU 成本)
  • 缩小(删除空格/注释,更改变量名等)也有帮助,如果你想要最好的结果,可以将它与 gzip 压缩一起使用
  • 基于 js 的解压器很可能是无用的——虽然你可能会得到更小的尺寸,但客户端的 CPU 开销很大。
于 2009-06-30T00:02:56.837 回答
1

对于我们的一款产品,我们将所有 Javascript 文件连接在一起(大多数文件在大多数页面上使用,所以这对我们来说很有意义)并使用Javascript::Minifier。这给了我们相当不错的速度提升。

于 2009-06-04T19:02:35.157 回答
1

很多可能是由于不关心可能在速度较慢且连接速度较慢的机器上查看您的页面的人,并假设每个人都有 50Mbps 的线路和 3 Gigs 的 RAM。

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

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

function log(stuff) {
    if (window.console && window.console.log) {
        console.log(stuff);
    }
};
于 2009-06-04T19:16:45.563 回答
1

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

于 2009-06-05T03:07:46.237 回答
0

一字打包机

于 2009-06-04T18:57:05.213 回答
0

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

于 2009-06-04T19:23:43.443 回答
0
  1. 我不会缩小我自己的 javascript 代码,因为文本倾向于很好地 gzip/压缩。
  2. 我会缩小一个非常大的(比如 > 100 kb)javascript 库(但是我可能不想再使用这么大的库(或者只是运送我使用的库))。

我倾向于相信很多 javascript-minification (实际上)是为了实现某种 javascript 代码的(徒劳的)混淆,而不是宣称的最终用户性能增益。

于 2009-06-04T19:52:38.190 回答
0

YUI Compressor还有一个 .NET 端口,可让您:-

  • 将缩小/文件合并到 Visual Studio 构建后事件中
  • 集成到 TFS 构建(包括 CI)
  • 如果您只想在自己的代码中使用 dll(例如即时缩小)。
于 2009-07-07T00:15:15.397 回答
0

我想我会分享我的 js 部署方法。看看这篇博文: http://www.picnet.com.au/blogs/Guido/post/2009/12/10/Javascript-runtime-compilation-using-AspNet-and-Googles-Closure-Compiler。 aspx

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

谢谢圭多

于 2009-12-10T03:10:54.833 回答