- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我能找到的所有 JS 压缩器都是通过空格消除、变量重命名和常规压缩的组合工作的。但是,如果压缩器知道正在压缩的项目需要模块中的哪些功能,则可以减少更多内容。
假设一个项目使用 underscore.js , 但仅使用导出函数 _.isEmpty
和 _.isArray
。看着the source ,压缩器可以只包含 _.isEmpty
、_.isArray
、_.isString
和 _.hasOwnProperty
.
这样做可能需要标记模块源以说明什么是什么并表达模块内依赖性,例如:
//{{ "_.isEmpty" depends "_.isArray", "_.isString", "_.hasOwnProperty"
_.isEmpty = function(obj) {
if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
for (var key in obj) if (hasOwnProperty.call(obj, key)) return false;
return true;
};
//}}
然后可以运行 minify underscore.js ["_.isEmpty", "_.isArray"]
来删除不需要的所有内容。或者,您可以在代码中包含相同的标签来表达 underscore.js
的那些必需部分,然后将您的代码与下划线捆绑在一起并有条件地编译结果。在这两种情况下,您都可以在最后运行标准缩小器。
正如所描述的,这甚至不是特定于 JS 的,所以某些东西必须存在于某处。一个更聪明的条件包含器或许可以分析代码以检测依赖关系,但这是一个难题。
我正在寻找一个 JS“缩小器”,它可以在依赖项注释的帮助下削减死代码。有这种东西吗?
最佳答案
谷歌的 Closure Compiler的“高级编译”功能做你想做的事——它解析你的 JavaScript 源代码并自动删除它的死代码 (try it online)。缺点是你may have to make changes to your code不过,让它起作用。
关于Javascript 条件包含预缩小 : does such a tool exist?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6276445/
我是一名优秀的程序员,十分优秀!