【问题标题】:how to have part of some JS code NOT being minified by minifiers如何让某些 JS 代码的一部分不被缩小器缩小
【发布时间】:2014-11-10 21:22:52
【问题描述】:

有很多工具可以通过修改变量名、删除 cmets 等来“压缩”或多或少的 javascript 文件...

但是如何“告诉”他们从该文件处理文件的部分。我需要以某种方式“告诉”他们,甚至以另一种方式重写该部分,或者在 cmets 中放置一些标签,...处理我文件的某些部分。

我发现的最简单但非常丑陋的解决方案是将我的代码放在一个字符串中并eval 它。但如果还有其他解决方案,我很想知道,因为eval 太丑了!

更新

由于我的要求,这些不是可能的答案:

  • 文件必须缩小
  • 需要从源代码中完成

【问题讨论】:

  • 把它剪下来,压缩后粘贴回去?
  • 为什么不希望它缩小?你总是可以不缩小有问题的文件。
  • 不,这不是一个选项,我需要这样做 FROM
  • @Shriike 因为浏览器下载速度更快,但这不是问题
  • @Huafu 我的问题实际上是相反的。我在问您为什么不希望缩小文件的一部分。如果我们了解动机,它可以帮助每个人找到解决方案。

标签: javascript minify uglifyjs


【解决方案1】:

如果您使用 gulp,有一个名为 gulp-tap 的模块,您可以使用它来抓取文件,将其拆分为某种类型的标识符,缩小您想要的部分,然后将其连接在一起。我确信 grunt 或其他任务运行器具有类似的功能

【讨论】:

  • 是的,谢谢,但我需要从源头执行此操作,无论我使用什么压缩器。我真的需要在源代码中完成此操作;-)
  • “来自源头”?当然,这在很大程度上取决于您使用的缩小器。
  • 好吧,即使很脏,eval 也是我所说的from the source 的一个很好的例子,因为它适用于所有缩小器,而且它在源代码中。但是,是的,eval 很丑
  • 当你说'从源头'时,你的意思是在运行时?您无法控制实际文件吗?
  • 我可以控制实际文件,但我的意思是,我想告诉压缩器不要从源文件中压缩我的部分文件,例如带有一些标签
【解决方案2】:

编辑、更新

尝试在yuicompressor 使用 cmets 吗?

/*! function someFunction(i) {i = "abc"; return i} */
// minified stuff 

Comment Starting with /*!gistOnline JavaScript/CSS Compressor


试试

/*! (function someFunction(i) {document.write(i); return i}(123)) */
    // minified stuff
    console.log("abc");
var scripts = document.scripts
, script = scripts[scripts.length - 1].innerText
.match(/\/\*!+.*\*\//g)[0].replace(/\/\*!|\*\//g, "").trim();
eval(script);

/*! (function someFunction(i) {document.write(i); return i}(123)) */
    // minified stuff
console.log("abc");
var scripts = document.scripts
, script = scripts[scripts.length - 1].innerText
.match(/\/\*!+.*\*\//g)[0].replace(/\/\*!|\*\//g, "").trim();
eval(script);

Degrading Script Tags

【讨论】:

  • 这是迄今为止最好的答案,但它有不好的一面,即如果不是全部,大多数 IDE 中的函数都没有作为源代码处理
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 2020-05-09
  • 2011-08-14
  • 2010-12-16
  • 1970-01-01
相关资源
最近更新 更多