如何检测JS是否已经打包

时间:2010-09-29 16:37:53

标签: c# .net javascript

嘿伙计们......我正在用C#编写一个Windows应用程序来缩小CSS文件并将JS文件打包为批处理作业。该应用程序的一个障碍是,如果用户选择已经打包的JavaScript文件,该怎么办?它最终会增加文件大小,完全违背我的目的!

打开文件并查找字符串eval(function(p,a,c,k,e,d)吗?我的猜测是否定的,因为还有其他JS包装方法。救救我!

6 个答案:

答案 0 :(得分:3)

有人可能会建议您比较前置和后置JS的大小,并返回/使用两者中较小的一个。

更新基于Sep 30 at 1:02var unpackedJs = File.ReadAllText(...) var unpackedSize = jsContent.Length; var packedJs = ... // Your Packaging routine File.WriteAllText(pathToFile, unpackedSize < packedJs.Length ? unpackedJs : packedJs) 的评论中的问题

以下是一种非常简单的说法。可能有不同的,或更准确的方法来确定这一点,但这应该让你朝着正确的方向前进:

{{1}}

答案 1 :(得分:1)

我会检查文件大小和代码行(例如:平均行长度)。这两个信息应该足以知道代码是否足够紧凑。

试试 demo

答案 2 :(得分:1)

我指示你发帖,建议包装不好。

http://ejohn.org/blog/library-loading-speed/

而是使用缩小。 Google Closure编译器可以通过REST Web服务执行此操作。仅使用.min.js扩展名进行缩小(未打包)。

Gzip会做得更好,并且会被浏览器解压缩。最好在服务器上打开zip压缩,这将压缩缩小的文件。

当然,这引出了一个问题'如何判断我的Javascript是否已经缩小!'

答案 3 :(得分:0)

创建/保存缩小文件时,请使用“Filename.min.js”的标准文件名约定。然后,当他们选择文件时,您可以将其作为可靠指标进行检查。

我认为在虚拟打样上过火是不明智的。如果一个用户(开发人员,那个用户)愚蠢到足以双重打包文件,他们应该遇到问题。我知道你应该给他们带来怀疑的好处,但在这种情况下,这似乎不值得花费。

答案 4 :(得分:0)

如果您正在使用安全最小化例程,则输出应与输入相同。我不推荐你提到的例程。 MS的Ajax Minifier是一个很好的工具,甚至可以在你的项目中使用dll。这会使你的担忧成为一个问题。

答案 5 :(得分:0)

我建议在打包文件的扩展名中添加'.min'前缀,例如'script.min.js'。然后只需检查文件名。

除此之外,我建议检查线条的长度,以及使用的空格数量。 Minified / packed JS通常几乎没有空格(通常是字符串)和非常长的行。