最小化可能与其他脚本一起运行的JavaScript代码是否安全?

Is it safe to minify JavaScript code that might run alongside other scripts?

本文关键字:JavaScript 代码 是否 安全 运行 一起 其他 脚本 最小化      更新时间:2023-09-26

例如,在侵略性模式下,Google Closure将重命名函数。如果有人包括我的闭包编译脚本和另一个脚本其他人也用闭包编译,重命名冲突可能发生吗?

简而言之,我想减少我的代码,但它将用于其他网站,我想避免与其他脚本冲突。

你总是要担心在JavaScript全局作用域中定义的变量的冲突,不管你是否最小化你的脚本。如果你想尽量减少冲突的可能性,可以使用函数闭包包装器来包装代码。

Closure的高级模式只会使潜在的冲突变得更糟,因为它将许多对象编译成新的全局对象(命名相似,例如a, b等)以获得最快的性能。这就是为什么Closure的高级模式最好同时使用所有程序文件,而不是零碎地使用。

ga.js (Google Analytics)这样的东西被设计成只向全局范围暴露少数对象,而其他所有对象都包装在闭包中。文件本身进行了积极的优化。注意——最小化/非最小化与碰撞无关。你可以有一个带有大量冲突的纯脚本JavaScript文件,或者你可以有一个没有冲突的高度优化的脚本。

冲突与最小化或变量重命名无关。通过避免在全局作用域中创建对象,可以避免冲突。没有在全局作用域中创建的任何其他内容都不会与其他脚本冲突。例如,如果您加载另一个覆盖_gat_gaq全局变量的脚本,则可以碰撞ga.js。尝试一下,谷歌分析将不再工作。换句话说,ga.js适用于不同的网页而不是,因为它是无冲突的,但因为它创建了全局变量(即_gat_gaq),其名称非常不太可能被其他脚本选择

您最好使用yuiccompressor,它的侵略性要小得多,并且往往不会缩小任何看起来是外部的

查看:- http://developer.yahoo.com/yui/compressor/