V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rv54ntjwfm3ug8
V2EX  ›  程序员

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

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

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

    <td>未付款</td>

    这样的。而现在是

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

    这样的。问题是前一种的“未付款”和后一种的“0”是等同的,而且后一种还要使用 js 再运行一次。吐槽的应该是这个多此一举的做法。
    (而且也不光是多此一举,传输的数据多了,浏览器遇到 script 就要暂停执行,对性能不好。document.write 感觉有点危险,当页面加载后如果用这个,就是直接清空。)
    vibbow
        15
    vibbow  
       156 天前
    @dcsuibian 现实情况是,使用古典 JavaScript 的页面的速度通常都比使用模板引擎的要快 😂
    cslive
        16
    cslive  
       156 天前
    经过 #14 解释看懂了😂
    h82258652
        17
    h82258652  
       156 天前
    缺点还是有吧😂
    相当于把订单的所有业务状态暴露了
    sunhelter
        18
    sunhelter  
       156 天前
    #14 解释通俗易懂,还在想那个 @thatOrder.StatusType 是什么意思
    zzlhr
        19
    zzlhr  
       156 天前
    感觉 没毛病啊 ~
    Mateverse
        20
    Mateverse  
       156 天前   ❤️ 1
    咱就说,能不能跑。
    JaxXu
        21
    JaxXu  
       155 天前
    。。。。说实话在干后端的时候,我真的写过这样的代码
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4025 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 09:41 · PVG 17:41 · LAX 02:41 · JFK 05:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.