在 .NET 环境中优雅地缩小动态生成的 javascript? [关闭]
Posted
技术标签:
【中文标题】在 .NET 环境中优雅地缩小动态生成的 javascript? [关闭]【英文标题】:Elegantly minify dynamically generated javascript in a .NET environment? [closed] 【发布时间】:2012-01-23 22:07:45 【问题描述】:我正在通过 .NET Web 应用程序以编程方式创建 javascript 文件,并希望在将其传递给客户端之前对其进行缩小。有没有一种有效的技术来做到这一点?
【问题讨论】:
hanselman.com/blog/… 【参考方案1】:如果您只是希望能够在将 C# 中的 javascript 字符串保存到文件之前将其缩小,我会使用 MS Ajax Minifier 或 YUI compressor for .net。这两个都公开了一个允许您执行此操作的 API。下面是一个使用 ajax minifier 的示例:
var minifier = new Microsoft.Ajax.Utilities.Minifier();
var minifiedString = minifier.MinifyJavaScript(unMinifiedString);
为 .net 使用 YUI 压缩器:
var minifiedString = JavaScriptCompressor.Compress(unMinifiedString);
ajax minifier 和 YUI Compressor 库都可以通过 Nuget 获得。
【讨论】:
谢谢马特-太完美了,正是我想要的。 如果有人想知道为了使用Microsoft.Ajax.Utilities.Minifier
而需要添加的DLL引用,MSI默认安装到C:\Program Files (x86)\MSBuild\Microsoft\MicrosoftAjax
现在是 2016 年,但我在尝试找到一个 .net 库来压缩包含 javascript 代码的字符串时仍然回到这个问题上。我比较了 YUI Compressor 和 MS Ajax Minifier 的输出,MS 库不仅似乎压缩得更小(例如用逻辑语句替换 'if' 语句),而且 YUI Compressor 实际上对我来说失败了尝试压缩包含 jquery 2.2.3 库等内容的脚本。我只是使用了或多或少的默认设置,所以可能是用户错误。
最后一个链接(YUI
)改为:github.com/YUICompressor-NET/YUICompressor.NET
万一有人来到这个线程,Microsoft Ajax 缩小器将结束生命。该项目已分叉,目前在此处支持:github.com/madskristensen/BundlerMinifier【参考方案2】:
您可以使用Closure Compiler,但我不建议您在每次用户访问您的网站时都缩小文件。在部署新提交之前构建所有文件要好得多。看看this article about tools。
【讨论】:
感谢 Elisue - 我正在为用户生成一个 很多时候这样的方法会很好 - 例如,如果页面是 MVC Action,输出缓存可用于降低整页呈现的频率,同时仍允许配置和其他运行时动态行为。【参考方案3】:我手动使用这个。
http://dean.edwards.name/packer/
我压缩文件,上传,然后撤消包,这样我的源代码就完好无损。我只打包生产代码。
【讨论】:
谢谢 Chris- 我一直在寻找自动化解决方案,但看起来很有趣。在我的链接列表上。【参考方案4】:好吧,我认为您需要做三件事来缩小脚本文件:
-
缩短长变量
删除 cmets
删除不必要的空格(制表符、空格、回车)
在运行时替换这些都相对简单,但需要编写一些代码。对于变量缩短,请在其范围内找到长度超过 2 个字母的类似变量。然后缩写并在代码块(变量的范围)中跟进。
删除 cmets 很简单。删除空格也很容易。对于单行,找到//
并删除直到回车/换行。空格,用空格替换制表符,用空格替换多个空格,用空格替换回车/换行符。
【讨论】:
感谢 Shark,但我不是那么有才华,而且我没有那么多时间... :) 我正在寻找一个库或 dll,其中有人已经完成了这项工作。也许你可以做一个??? PLZ?【参考方案5】:我们使用JSMIN的C#端口:http://www.koders.com/csharp/fidC8F76D32D2FB3B213046C30CD8B362820FFFD604.aspx?s=file#L15
效果很好。
【讨论】:
谢谢 Mike- 我看了看,看起来不错。我不确定 javascript 发生了多少变化,但它看起来有点过时了。不知道你最近有没有用过……【参考方案6】:为什么不在 .NET 中直接使用 javascript 编写的压缩器(如果它可以作为 JScript 代码使用,请尝试一下)。想到了 Uglify.js...
【讨论】:
以上是关于在 .NET 环境中优雅地缩小动态生成的 javascript? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章