手动连接JavaScript的安全方法?

手动连接JavaScript的安全方法?,javascript,concatenation,Javascript,Concatenation,我需要手动连接几个JavaScript代码块。有什么我应该考虑的吗? 例如,将每个块包装在一个立即执行的函数中,并在该函数前面加一个是否是一个好主意 我还应该注意什么以避免连接版本出现问题?请记住,其中一个块中的语法错误将阻止整个代码运行 将每个块包装到函数中可能会破坏预期在全局范围内运行的编写糟糕的代码 要处理语法错误,最好使用代码编译器,如YUI Compressor或Google Closure compiler,来处理每个代码块,提前收到任何语法错误的通知,并在处理时减少它们的字节长度

我需要手动连接几个JavaScript代码块。有什么我应该考虑的吗?

例如,将每个块包装在一个立即执行的函数中,并在该函数前面加一个
是否是一个好主意


我还应该注意什么以避免连接版本出现问题?

请记住,其中一个块中的语法错误将阻止整个代码运行

将每个块包装到函数中可能会破坏预期在全局范围内运行的编写糟糕的代码

要处理语法错误,最好使用代码编译器,如YUI Compressor或Google Closure compiler,来处理每个代码块,提前收到任何语法错误的通知,并在处理时减少它们的字节长度

任何这样的工具输出的代码都是高度标准化的,可能所有分号都在正确的位置。然后,您可以连接压缩版本

然后,您将需要处理由一个代码块生成的运行时错误(异常),并停止所有后续块的执行。为了解决这个问题,只需将每个代码块包装在一个
try{…}catch(err){}
中,以便在出现错误时继续执行下一个代码块


您可以在代码编译阶段之前或之后执行此操作。

为什么不使用像UglifyJS这样的迷你程序
cat file1.js file2.js | uglifyjs-o out.js
当然我可以用一个迷你器来实现这一点,但我很好奇。因此,学习:-)只是出于兴趣。如果您控制了这些代码片段,那么就应该这样做。但即使是这些工具也必须遵循一些最佳实践,不是吗?正如我所指出的,我对如何避免手工操作不感兴趣,而是想知道应该注意什么。当然,这些工具解决了这个问题,所以我不必再做了,但基本上它只会把问题转移到另一个层次。这个问题非常复杂。如果您的一个块在某个地方缺少一个紧括号
}
,而下面的一个块的
}
太多,该怎么办?它将以意外的方式更改所有这些块的代码,前提是它不会导致语法错误。这就是为什么我建议使用工具检查每个块的语法,并以标准方式重新格式化其代码。手工操作很容易出错。