Manually bundle and minify JS from a controller action

和自甴很熟 提交于 2019-12-06 01:59:20

问题


I love Bundling and Minification in ASP.NET MVC 4.5 and use it a lot.

However, one small problem is that our "plugins" are hosted on a cookieless domain, which is in a separate project in my Visual Studio solution.

I'm looking for a solution that'll allow our main site to request a bundled and minified JS file containing any number of our plugins from the cookieless site. Something like:

http://my.cookieless.domain/plugins.js?include=alpha&include=bravo,charlie

So far, the best solution I can find is to use a 3rd party bundling and minification library, which seems like overkill considering ASP.NET has one built in.

Is it possible to manually call ASP.NETs bundling/minification process from a within controller action?

public JavaScriptResult Index(IList<string> include)
{
    //bundle and minify JS
}

回答1:


I came across this in search of something similar, here is the solution:

public ActionResult DynamicJs()
{
      // Obviously this will be dynamically generated
      string javaScript = new Minifier().MinifyJavaScript("alert('Hello world!');");

      //returns minified javaScript
      return JavaScript(javaScript);
}

Same goes for CSS. You might want to use:

 new Minifier().MinifyStyleSheet(styleSheet, new CssSettings { ColorNames = CssColor.Hex }

The Minifier class is a member of Microsoft.Ajax.Utilities, which you can get from the WebGrease Nuget package.



来源:https://stackoverflow.com/questions/19275163/manually-bundle-and-minify-js-from-a-controller-action

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!