维护一个屎山时看到了模板渲染的最佳实践(误),竟然说不出缺点

2022-03-08 19:52:24 +08:00
 rv54ntjwfm3ug8
@foreach (var thatOrder in Model)
{
    ...
    <td><script>document.write(["未付款", "等待发货", "已发货", "已签收", "待评价", "已完成", "已取消"][@thatOrder.StatusType]);</script></td>
    ...
}
4036 次点击
所在节点    程序员
21 条回复
zjhzxhz
2022-03-08 20:11:53 +08:00
HTML 数据传输爆炸?
pengtdyd
2022-03-08 20:42:56 +08:00
这个时候我又想起了那句经典名言-----------又不是不能跑!
DOLLOR
2022-03-08 20:55:20 +08:00
只要用 JS ,必然能举出不利于 SEO 、万一浏览器不支持 JS 之类的万能缺点。
ChrisFreeMan
2022-03-08 20:58:00 +08:00
很棒的代码,通俗易懂不费一点脑子就能理解
gowk
2022-03-08 21:02:59 +08:00
ASP.NET Razor View
IvanLi127
2022-03-08 21:57:48 +08:00
我居然觉得。。挺不错的。。不过都模板引擎了,为啥要用 js😥
CallMeReznov
2022-03-08 22:06:20 +08:00
我可以不可以理解这是一种 GEEK 风?
codehz
2022-03-08 22:11:51 +08:00
虽然知道这是 meme ,但还是要提一句:Document write 会严重拖慢渲染速度(((
xuanbg
2022-03-08 22:21:24 +08:00
代码只要易于维护就是好代码。很多时候性能什么的就根本不是关键。
tomczhen
2022-03-08 22:23:39 +08:00
基于后端模板渲染的前后端分离项目 :doge:
agagega
2022-03-08 22:36:01 +08:00
在后端生成动态的 JS 代码发给前端去执行,本来就是前 SPA 时代一种常用的做法啊,Rails 的 SJR 就是这么搞的
seakingii
2022-03-09 00:01:03 +08:00
这很好啊,可以反没有带脚本引擎的爬虫
finab
2022-03-09 00:06:11 +08:00
挺好,表驱动替代 if ,当初学设计模式第一课😄
dcsuibian
2022-03-09 01:10:32 +08:00
第一眼以为自己看明白了、通俗易懂,仔细看了一下才发现是怎么回事,感觉楼上的有几楼似乎也没看懂。

本来服务端发给前台的 html 应该是

<td>未付款</td>

这样的。而现在是

<td><script>document.write(["未付款", "等待发货", "已发货", "已签收", "待评价", "已完成", "已取消"][0]);<script></td>

这样的。问题是前一种的“未付款”和后一种的“0”是等同的,而且后一种还要使用 js 再运行一次。吐槽的应该是这个多此一举的做法。
(而且也不光是多此一举,传输的数据多了,浏览器遇到 script 就要暂停执行,对性能不好。document.write 感觉有点危险,当页面加载后如果用这个,就是直接清空。)
vibbow
2022-03-09 08:29:48 +08:00
@dcsuibian 现实情况是,使用古典 JavaScript 的页面的速度通常都比使用模板引擎的要快 😂
cslive
2022-03-09 09:04:22 +08:00
经过 #14 解释看懂了😂
h82258652
2022-03-09 09:13:55 +08:00
缺点还是有吧😂
相当于把订单的所有业务状态暴露了
sunhelter
2022-03-09 10:06:20 +08:00
#14 解释通俗易懂,还在想那个 @thatOrder.StatusType 是什么意思
zzlhr
2022-03-09 13:46:30 +08:00
感觉 没毛病啊 ~
Mateverse
2022-03-09 14:57:40 +08:00
咱就说,能不能跑。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/838933

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX