首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BundleTransformer.UglifyJs进行Javascript混淆

使用BundleTransformer.UglifyJs进行Javascript混淆
EN

Stack Overflow用户
提问于 2014-06-05 15:35:32
回答 2查看 1.8K关注 0票数 2

我刚刚在MVC项目中添加了BundleTransformer.UglifyJs NuGet package来混淆javascript代码。

但结果看起来并不是很丑陋:

代码语言:javascript
复制
function onDeckenstaerkeChanged(){validateCorrectDeckenstaerke();$("#dropdown-bta").empty();$.each(getBelagtraegerAbstand(

这是我的web.config中配置minifier的部分:

代码语言:javascript
复制
<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>

对我来说,结果看起来是模糊的,但不是模糊的。

我错过了什么?结果应该是什么样子的?

有没有一种方法可以调试使用了哪个模块?

EN

回答 2

Stack Overflow用户

发布于 2014-09-20 21:05:13

如上所述,here

JavaScript引擎切换器库使用

作为JS引擎。为使此模块正常工作,建议安装以下NuGet包之一:JavaScriptEngineSwitcher.MsieJavaScriptEngineSwitcher.V8。安装包后,需要在/configuration/bundleTransformer/uglify/jsEngine配置元素的name属性中设置JavaScript engine的名称(如MsieJsEngine)。

因此,请安装JavaScriptEngineSwitcher.MsieJavaScriptEngineSwitcher.V8包。

重要!

根据您安装的包,您必须在V8的web.config代码片段的末尾手动添加:

代码语言:javascript
复制
...
</core>
  <uglify>
    <jsEngine name="V8JsEngine"></jsEngine>
  </uglify>
</bundleTransformer>

或者对于MsieJsEngine:

代码语言:javascript
复制
...
</core>
  <uglify>
    <jsEngine name="MsieJsEngine"></jsEngine>
  </uglify>
</bundleTransformer>
票数 4
EN

Stack Overflow用户

发布于 2014-12-14 00:04:53

onDeckenstaerkeChanged函数是全局函数,因此它的名称不会被处理。

您需要将其设置为本地化。为此,将代码包装在一个IIFE (立即调用的函数表达式)中:

代码语言:javascript
复制
(function(){
    ...
    function onDeckenstaerkeChanged(){
        ...
    }
    ...
})();

还有另一种变体。如果启用mangling.topLevel选项,则可以对所有全局变量进行模糊处理。在mangling.except选项中,您可以指定不需要应用混淆的变量的名称:

代码语言:javascript
复制
<?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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24054299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档