• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rv54ntjwfm3ug8
V2EX  ›  程序员

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

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

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

    <td>未付款</td>

    这样的。而现在是

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

    这样的。问题是前一种的“未付款”和后一种的“0”是等同的,而且后一种还要使用 js 再运行一次。吐槽的应该是这个多此一举的做法。
    (而且也不光是多此一举,传输的数据多了,浏览器遇到 script 就要暂停执行,对性能不好。document.write 感觉有点危险,当页面加载后如果用这个,就是直接清空。)
    vibbow
    vibbow
    Mar 9, 2022
    15
    @dcsuibian 现实情况是,使用古典 JavaScript 的页面的速度通常都比使用模板引擎的要快 😂
    cslive
    cslive
    Mar 9, 2022
    16
    经过 #14 解释看懂了😂
    h82258652
    h82258652
    Mar 9, 2022
    17
    缺点还是有吧😂
    相当于把订单的所有业务状态暴露了
    sunhelter
    sunhelter
    Mar 9, 2022
    18
    #14 解释通俗易懂,还在想那个 @thatOrder.StatusType 是什么意思
    sss007
    sss007
    Mar 9, 2022
    19
    感觉 没毛病啊 ~
    Mateverse
    Mateverse
    Mar 9, 2022❤️1
    20
    咱就说,能不能跑。
    JaxXu
    JaxXu
    Mar 9, 2022
    21
    。。。。说实话在干后端的时候,我真的写过这样的代码
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1919 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 08:44 · PVG 16:44 · LAX 00:44 · JFK 03:44
    ♥ Do have faith in what you're doing.