嘿伙计们......我正在用C#编写一个Windows应用程序来缩小CSS文件并将JS文件打包为批处理作业。该应用程序的一个障碍是,如果用户选择已经打包的JavaScript文件,该怎么办?它最终会增加文件大小,完全违背我的目的!
打开文件并查找字符串eval(function(p,a,c,k,e,d)
吗?我的猜测是否定的,因为还有其他JS包装方法。救救我!
答案 0 :(得分:3)
有人可能会建议您比较前置和后置JS的大小,并返回/使用两者中较小的一个。
更新基于Sep 30 at 1:02
上var 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通常几乎没有空格(通常是字符串)和非常长的行。