一段时间以来,我一直在反对在 JavaScript 代码中嵌入服务器端标签,但今天被一个似乎不相信的开发人员当场提出来
有问题的代码是一个遗留的 ASP 应用程序,尽管这在很大程度上并不重要,因为它同样适用于 ASP.NET 或 PHP(例如)。
有问题的示例围绕使用他们在服务器端代码中定义的常量展开。
'VB
Const MY_CONST: MY_CONST = 1
If sMyVbVar = MY_CONST Then
'Do Something
End If
//JavaScript
if (sMyJsVar === "<%= MY_CONST%>"){
//DoSomething
}
我反对这一点的标准论点是:
- 脚本注入:服务器端标签可能包含可以破坏 JavaScript 代码的代码
- 单元测试。更难隔离代码单元以进行测试
- 代码分离:我们应该尽可能地将网页技术分开。
这样做的原因是开发人员不必在两个地方定义常量。他们推断,由于这是他们控制的值,因此不受脚本注入的影响。这将我对 (1) 的理由降低为“我们试图保持标准简单,定义异常情况会使人们感到困惑”
单元测试和代码分离的论点也站不住脚,因为页面本身是 HTML、JavaScript、ASP.NET、CSS、XML 的可怕混合物……你说它,它就在那里。本页面中包含的所有代码都不可能进行单元测试。
因此,鉴于当时的情况,我发现自己有点像一个坚持要更改代码的书呆子。
是否有任何进一步的论据可以支持我的推理,或者我是否真的在这种坚持上有点迂腐?