2013-03-16 80 views
0

我需要手动连接几个JavaScript代码块。有什么我应该考虑做的?手动连接JavaScript的安全方式?

例如,是否将每个块包装在立即执行的函数中并将其作为;的前缀?

还有什么要注意避免连接版本出现问题?

+1

为什么不使用像UglifyJS这样的缩小器? 'cat file1.js file2.js | uglifyjs -o out.js' – elclanrs 2013-03-16 09:46:07

+0

当然,我可以使用缩小器来完成这项工作,但我很好奇。所以它只是出于兴趣,学习:-)。 – 2013-03-16 09:48:09

+0

如果你在控制这些代码段,那么应该这样做。 – elclanrs 2013-03-16 09:50:00

回答

0

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

在函数内包装每个块可能会破坏预计在全局范围内运行的代码写得不好。

要处理语法错误,最好的方法是使用代码编译器(例如YUI Compressor或Google Closure Compiler)来处理每个代码块,事先收到任何语法错误通知并减少它们的字节长度而你在这里。

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

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

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

+0

但即使这些工具也必须遵循一些最佳实践,不是吗?正如我所指出的那样,我对如何避免手动操作并不感兴趣,但在了解需要注意的方面。当然,这些工具可以解决问题,所以我不必再这样做了,但基本上它只能将问题转移到另一个层面。 – 2013-03-16 09:51:56

+1

问题非常复杂。如果其中一个块在某处丢失了一个近似括号'},并且后面的块太多了,那么该怎么办?它会以意想不到的方式更改所有这些块的代码,假设它不会导致语法错误。这就是为什么我建议使用一种工具来检查每个单独块的语法并以标准方式重新格式化它的代码。手工操作非常容易出错。 – Tobia 2013-03-16 09:55:19

+0

好的,谢谢你的解释:-)! – 2013-03-16 10:02:38