Javascript 何时使用玉模板?

Javascript 何时使用玉模板?,javascript,node.js,pug,template-engine,Javascript,Node.js,Pug,Template Engine,发现玉模板很有趣。然而,目前我无法想象在哪种情况下使用翡翠,或者在哪里应用翡翠模板。有谁能给我一个实际的场景/例子,说明如何利用jade模板的力量 谢谢 假设您有一个应用程序在服务器端计算一些值,例如聊天室列表 那么您有两个合理的解决方案: 将这些数据作为JSON发送,以便某些JavaScript客户端构建列表 在HTML服务器端生成列表 模板系统对于第二种解决方案很有用 为了生成这个HTML,模板引擎是一个很好的解决方案,而不是让nodejs程序连接HTML片段 服务器的JS部分将生成数据(这

发现玉模板很有趣。然而,目前我无法想象在哪种情况下使用翡翠,或者在哪里应用翡翠模板。有谁能给我一个实际的场景/例子,说明如何利用jade模板的力量


谢谢

假设您有一个应用程序在服务器端计算一些值,例如聊天室列表

那么您有两个合理的解决方案:

  • 将这些数据作为JSON发送,以便某些JavaScript客户端构建列表
  • 在HTML服务器端生成列表
  • 模板系统对于第二种解决方案很有用

    为了生成这个HTML,模板引擎是一个很好的解决方案,而不是让nodejs程序连接HTML片段

    服务器的JS部分将生成数据(这里使用express并从关系数据库获取数据):

    翡翠档案会使用它们:

    table.list
            each room, i in rooms.public
                    tr
                            th: a(href=room.path) #{room.name}
                            td.rendered #{room.description}
                            if room.auth
                                    td.role= room.auth
    
    它会生成这种HTML:

    <table class="list">
        <tr>
            <th><a href="path1">Room 1</a></th>
            <td class="rendered">Description of room 1</td>
            <td class="role">Admin</td>
        </tr>
        <tr>
            <th><a href="path2">Room 2</a></th>
            <td class="rendered">Description of room 2</td>
        </tr>
    </table>
    
    
    1号房间的说明
    管理
    房间2的说明
    
    这稍微分离了管理数据和显示数据的关注点。它还有一个优点,就是与HTML没有太大区别,在我看来,当目标是生成HTML时,HTML是很好的


    这个例子取自。完整的Jade文件是。

    也可以使用模板引擎

    服务器端MVC框架
    与Denys提供的示例非常相似。
    例:

    静态网站生成器
    从动态内容(json、db等)生成静态站点。如果您不能使用服务器端语言或不想为此付费,此功能非常有用。
    例:

    发票应用程序

    模板引擎创建html,然后将其转换为模板。或任何其他生成PDF的应用程序。

    @destroy,谢谢您提供的信息。看起来是一个很好的学习曲线NodeJS+Express+Jade:)在我个人看来,一个复杂的应用程序将同时使用这两种解决方案:以json的形式发送一些数据(在ajax中,或使用websocket)或使用Jade生成静态HTML。有时,当我需要在JS客户端处理数据时,我也会使用Jade以一种混合的方式将JSON嵌入到页面中:Destroy,Jade可以在客户端和服务器端使用,因此您可以将数据作为JSON发送到客户端,并在那里呈现html以插入数据。Jade很适合这两种情况。@alex是的,它可以(对其他读者来说:您可能会使用我从未使用过的东西),但我不确定它是否像通常一样是一个完整的通用解决方案,如果您想构建页面客户端的元素,这是因为你有一些比Jade所能提供的更复杂的东西。人们通常希望在客户端构建元素,原因只有一个:他们希望在不重新加载页面的情况下更新页面。用jade很容易就能做到,我相信这是一个通用的解决方案。
    <table class="list">
        <tr>
            <th><a href="path1">Room 1</a></th>
            <td class="rendered">Description of room 1</td>
            <td class="role">Admin</td>
        </tr>
        <tr>
            <th><a href="path2">Room 2</a></th>
            <td class="rendered">Description of room 2</td>
        </tr>
    </table>