现在是社区维基!
我想先说清楚:这不是关于服务器端 Javascript 或运行 Javascript 服务器端的问题。这是一个关于从服务器端代码呈现 Javascript 代码(将在客户端执行)的问题。
话虽如此,以下面的 ASP.net 代码为例:
hlRemoveCategory.Attributes.Add("onclick", "return confirm('Are you sure you want to delete this?');")
这是在服务器端规定客户端onclick
事件。
与在客户端编写 Javascript 相反:
$('a[rel=remove]').bind('click', function(event) {
return confirm('Are you sure you want to delete this?');
}
现在我想问的问题是:从服务器端代码渲染 javascript 有什么好处?或者反之亦然?
我个人更喜欢将客户端 UI/行为连接到 HTML 元素的第二种方式,原因如下:
- 服务器端已经完成了它需要做的事情,包括数据验证、事件委托等;和
- 服务器端所看到的事件不一定是客户端的相同过程。即,客户端有更多事件(只需查看自定义事件);和
- 在事件期间,客户端和服务器端发生的事情可能完全不相关和解耦;和
- 客户端发生的任何事情都发生在客户端,服务器不需要知道。服务器应该处理并运行给他们的东西,如果发生客户端事件,流程如何实现并不是由他们来决定的;等等等等。
这些显然是我的想法。我想知道其他人的想法,以及是否有关于这个话题的任何讨论。
从这个论点分支的主题可以达到:
- 代码管理:从服务器端渲染所有内容是否更容易?
- 关注点分离:如果将客户端逻辑与服务器端逻辑分离会更容易吗?
- 效率:在编码和运行方面哪个更有效?
归根结底,我正试图让我的团队转向第二种方法。这支球队中有很多老家伙害怕这种变化。我只想用正确的事实和统计数据说服他们。
让我知道你的想法。
UPDATE1:看起来我们所有参与过这篇文章的人都有共同的想法;很高兴知道还有其他想法相似的人。现在去说服这些家伙;)谢谢大家。