如何在返回之前手动缩小 JavascriptResult 内容

How to manually minify a JavascriptResult content before returning it

我有一个控制器,它有一个特殊的方法 return 根据一些请求参数向我发送 js 内容。 一切都运行良好,我只是使用 return 一个 JavaScriptResult 的方法,我正在将一个视图(具有完整的 js 内容)渲染到一个字符串并 returning 它。

现在我想在该解决方案上更进一步。我希望缩小 js 内容。我发现(在 NuGet 上)一个 CrockfordJsMinifier class(Web Markup Minifier 包的一部分)似乎可以完成这项工作。

问题是:它不是一个完整的压缩器,它只是 "eating" 额外的空格、换行符等...它没有压缩变量或函数名称以及类似的东西。

因此我的问题是:是否可以在字符串上使用来自 MVC5 的 "Bundling and Minification" 解决方案的缩小?如果可以,我应该怎么做?

下面是我的方法的一个简短示例,只是为了说明:

    [AllowAnonymous]
    [HttpGet]
    public JavaScriptResult GetAnonymousJS(string JSName)
    {
        //"PartialToString" just renders the view on a string.
        string result = PartialToString(PartialView("PublicViewScripts/" + JSName));

        var minifier = new CrockfordJsMinifier();
        result = minifier.Minify(result, false).MinifiedContent;

        //This result is not "really" minified (is just roughly minified)
        return JavaScript(result);
    }

Microsoft Ajax Minifier怎么样。它可以根据需要压缩变量和函数名称。将 Ajaxmin.dll 添加到您的项目后,您可以调用 minifier:

public JavaScriptResult GetAnonymousJS(string JSName)
{
    //"PartialToString" just renders the view on a string.
    string result = PartialToString(PartialView("PublicViewScripts/" + JSName));

    var minifier = new Minifier();
    result = minifier.MinifyJavaScript(result);

    //This result is not "really" minified (is just roughly minified)
    return JavaScript(result);
}

http://ajaxmin.codeplex.com/wikipage?title=AjaxMin%20DLL