我正在使用gulp-uglify〜1.5.4进行JavaScript压缩,在文件中有以下代码:columns[j].colDef.cellRenderer.name === 'dateRenderer'
,cellRenderer
是一个函数,因此cellRenderer.name
将返回他该函数的名称。
因此,当函数为dateRenderer()
时,该代码应返回true
,这不会发生,因为在缩小之后该函数被弄乱了。
我发现了这个线程:Make gulp-uglify not mangle only one variable,但我不想告诉uglify要处理哪些变量,而不是,没有其他方法可以解决这个问题吗?就像在AngularJS中一样,我们正在使用$ inject服务。
答案 0 :(得分:2)
如果您不想指定给uglifyjs改掉哪些函数名,请将该函数名存储为字符串。
function dateRenderer() {
dateRenderer.rendererName = 'dateRenderer'
// do something useful
}
// later ...
var fn = dateRenderer
// do something
dateRenderer()
if (fn.rendererName === 'dateRenderer') {
console.log('ok!')
}
...或在调用该特定函数后设置其名称:
<nav class="uk-navbar uk-navbar-container uk-margin">
<div class="uk-navbar-left">
<a class="uk-navbar-item uk-logo" href="#">Logo</a>
<ul class="uk-navbar-nav">
<li class="uk-active"><a href="#">Active</a></li>
<li><a href="#">Item</a></li>
</ul>
</div>
<div class="uk-navbar-right">
<a class="uk-navbar-toggle" href="#modal-full" uk-search-icon uk-toggle></a>
</div>
</nav>
<div id="modal-full" class="uk-modal-full uk-modal" uk-modal>
<div class="uk-modal-dialog uk-flex uk-flex-center uk-flex-middle" uk-height-viewport>
<button class="uk-modal-close-full" type="button" uk-close></button>
<form class="uk-search uk-search-large">
<input class="uk-search-input uk-text-center" type="search" placeholder="Search..." autofocus>
</form>
</div>
</div>