Is there a .NET library for minifying Javascript?

2019-01-11 06:08发布

问题:

I'm programatically creating javascript files from a .NET web app, and would like to minify it before passing it on to the user? Is there a library or technique for doing this on the fly?

Thank

回答1:

If you simply want to be able to minify a javascript string in C# before saving it to a file, I would use either the MS Ajax Minifier or the YUI compressor for .net. Both of these expose an API that allows you to do this. Here is a sample using the ajax minifier:

var minifier = new Microsoft.Ajax.Utilities.Minifier();
var minifiedString = minifier.MinifyJavaScript(unMinifiedString);

Using the YUI Compressor for .net:

var minifiedString = JavaScriptCompressor.Compress(unMinifiedString);

Both the ajax minifier and and YUI Compressor libraries are available via Nuget.



回答2:

Why not to use javascript-written minifier directly in .NET (try if it works as JScript code). Uglify.js comes to mind...



回答3:

We use the C# port of JSMIN: http://www.koders.com/csharp/fidC8F76D32D2FB3B213046C30CD8B362820FFFD604.aspx?s=file#L15

It works pretty well.



回答4:

i use this manually.

http://dean.edwards.name/packer/

i compact the files, upload, then undo the pack so i have the source code intact. i pack production code only.



回答5:

Well, I would think there are three things you need to do to minify a script file:

  1. Shorten long variables
  2. Remove comments
  3. Remove needless whitespaces (tabs, spaces, carriage returns)

Those are all relatively simple to replace at runtime, but will take a bit of code writing. For the variable shortening, find like variables in their scope that are longer than, say 2 letters. Then abbreviate and have that follow through in the code block (the scope of the variable).

Removing comments will be simple. Removing whitespaces are also easy. For singleline, find // and delete until a carriage return/newline feed. Whitespaces, replace tabs with a space, multiple spaces with a space, and carriage returns/newline feeds with a space.



回答6:

You can use the Closure Compiler, but I wouldn't recommend you minifying files everytime a user visits your website. It's much better to build all the files before deploying new commits. Take a look at this article about tools.