加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 在服务器端级别渲染javascript.好主意还是坏主意?

发布时间:2020-12-16 06:43:12 所属栏目:asp.Net 来源:网络整理
导读:现在是一个社区维基! 我想先说清楚:这不是关于服务器端Javascript或运行Javascript服务器端的问题.这是关于从服务器端代码呈现Javascript代码(将在客户端执行)的问题. 话虽如此,请看下面的ASP.net代码,例如: hlRemoveCategory.Attributes.Add("onclick","
现在是一个社区维基!

我想先说清楚:这不是关于服务器端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元素的第二种方法,原因如下:

>服务器端执行它已经需要的任务,包括数据验证,事件委托等;和
>服务器端看到的事件不一定是客户端的相同过程.也就是说,客户端还有更多的事件(只看自定义事件);和
>在事件期间,客户端和服务器端发生的事情可能完全不相关并且分离;和
>客户端发生的事情发生在客户端,服务器无需知道.服务器应该处理并运行给予它们的内容,如果客户端事件发生,那么进程如何生效并不是由他们决定的;等等等等.

这显然是我的想法.我想知道其他人的想法以及是否有关于这个主题的讨论.

从这个参数分支的主题可以达到:

>代码管理:从服务器端渲染所有内容是否更容易?
>关注点分离:如果将客户端逻辑分离到服务器端逻辑,是否更容易?
>效率:在编码和运行方面效率更高?

在一天结束时,我正试图让我的团队走向第二种方法.这支球队中有很多老球员都害怕这种变化.我只想用正确的事实和统计数据说服他们.

让我知道你的想法.

更新1:看起来我们所有参与这篇文章的人都有共同的想法;很高兴知道其他人也有同样的想法.现在要说服这些人;)谢谢大家.

解决方法

你的第二个例子远远优于第一个例子. Javascript是您的行为层,应该与您的语义标记(内容)和CSS(演示文稿)分开.这是更好的架构有很多原因:

>鼓励逐步提升.正如您所提到的,后端代码应该在没有JS的情况下正常工作.您不能依赖拥有JS的客户.这样你可以在没有JS的情况下构建一次,然后可以增强那些使用JS的人的体验(例如通过添加客户端验证以及服务器端验证,以便客户端可以获得即时反馈)
>清洁标记.通常会减少下载大小.一个可重用的选择器在一个单独的JS文件中,可以在页面之间缓存和共享,而不是每个元素上的处理程序.
>所有的JS都在一个重复使用的地方.例如如果您的代码打开了一个弹出窗口并且您决定更改窗口的尺寸,那么您将在JS文件的代码中更改一次,而不必在每个内联处理程序中更改它.

还有很多其他论点和理由,但它们应该让你开始……

此外,从您的示例中可以看出,您的文档中有一个可以删除内容的普通链接.这也是一种不好的做法.删除或更新内容的任何内容都应该在POST(而不是GET)请求上完成.所以它应该是提交表格的结果.否则例如只需抓取您的网页,googlebot就会意外删除您的所有内容(搜索引擎机器人不执行JS,因此您的警报无法帮助)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读