我刚刚在MVC项目中添加了BundleTransformer.UglifyJs NuGet package来混淆javascript代码。
但结果看起来并不是很丑陋:
function onDeckenstaerkeChanged(){validateCorrectDeckenstaerke();$("#dropdown-bta").empty();$.each(getBelagtraegerAbstand(这是我的web.config中配置minifier的部分:
<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">
<core>
<css>
<minifiers>
<add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" />
<add name="YuiCssMinifier" type="BundleTransformer.Yui.Minifiers.YuiCssMinifier, BundleTransformer.Yui" /></minifiers>
<translators>
<add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" />
</translators>
</css>
<js defaultMinifier="UglifyJsMinifier">
<minifiers>
<add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" />
<add name="YuiJsMinifier" type="BundleTransformer.Yui.Minifiers.YuiJsMinifier, BundleTransformer.Yui" />
<add name="UglifyJsMinifier" type="BundleTransformer.UglifyJs.Minifiers.UglifyJsMinifier, BundleTransformer.UglifyJs" />
</minifiers>
<translators>
<add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" />
</translators>
</js>
</core>
</bundleTransformer>
对我来说,结果看起来是模糊的,但不是模糊的。
我错过了什么?结果应该是什么样子的?
有没有一种方法可以调试使用了哪个模块?
发布于 2014-09-20 21:05:13
如上所述,here
JavaScript引擎切换器库使用
作为JS引擎。为使此模块正常工作,建议安装以下NuGet包之一:JavaScriptEngineSwitcher.Msie或JavaScriptEngineSwitcher.V8。安装包后,需要在/configuration/bundleTransformer/uglify/jsEngine配置元素的name属性中设置JavaScript engine的名称(如MsieJsEngine)。
因此,请安装JavaScriptEngineSwitcher.Msie或JavaScriptEngineSwitcher.V8包。
重要!
根据您安装的包,您必须在V8的web.config代码片段的末尾手动添加:
...
</core>
<uglify>
<jsEngine name="V8JsEngine"></jsEngine>
</uglify>
</bundleTransformer>或者对于MsieJsEngine:
...
</core>
<uglify>
<jsEngine name="MsieJsEngine"></jsEngine>
</uglify>
</bundleTransformer>发布于 2014-12-14 00:04:53
onDeckenstaerkeChanged函数是全局函数,因此它的名称不会被处理。
您需要将其设置为本地化。为此,将代码包装在一个IIFE (立即调用的函数表达式)中:
(function(){
...
function onDeckenstaerkeChanged(){
...
}
...
})();还有另一种变体。如果启用mangling.topLevel选项,则可以对所有全局变量进行模糊处理。在mangling.except选项中,您可以指定不需要应用混淆的变量的名称:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">
...
<uglify>
<js ...>
<mangling topLevel="true" except="$,ko,myVar" />
</js>
...
</uglify>
...
</bundleTransformer>
</configuration>https://stackoverflow.com/questions/24054299
复制相似问题