【问题标题】:How can I comment the EJS code (JS node) without getting an error如何在不出错的情况下评论 EJS 代码(JS 节点)
【发布时间】:2023-03-29 23:48:01
【问题描述】:

我在 EJS 文件中有这段代码:

<table>
<% for(var i=0; i < data.length; i++) { %>
   <tr>
     <td><%= data[i].id %></td>
     <td><%= data[i].name %></td>
   </tr>
<% } %>
</table>

当我这样评论时,

<!-- <table> -->
<!-- <% for(var i=0; i < data.length; i++) { %> -->
<!--    <tr> -->
<!--      <td><%= data[i].id %></td> -->
<!--      <td><%= data[i].name %></td> -->
<!--    </tr> -->
<!-- <% } %> -->
<!-- </table> -->

我在第 2 行仍然有错误。这是错误的堆栈:

ReferenceError: c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\views\x.ejs:2
   1| <!-- <table> -->
>> 2| <!-- <% for(var i=0; i < data.length; i++) { %> -->
   3| <!--    <tr> -->
   4| <!--      <td><%= data[i].id %></td> -->
   5| <!--      <td><%= data[i].name %></td> -->

data is not defined
   at eval (eval at <anonymous> (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\ejs\lib\ejs.js:455:12), <anonymous>:11:25)
   at c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\ejs\lib\ejs.js:482:14
   at View.exports.renderFile [as engine] (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\ejs\lib\ejs.js:348:31)
   at View.render (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\view.js:93:8)
   at EventEmitter.app.render (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\application.js:566:10)
   at ServerResponse.res.render (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\response.js:938:7)
   at c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\todoList.js:13:6
   at Layer.handle [as handle_request] (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\router\layer.js:82:5)
   at next (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\router\route.js:110:13)
   at Route.dispatch (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\router\route.js:91:3)

如何评论这段代码?

【问题讨论】:

  • 请添加您收到的错误。我尝试在 ejs 中添加 并且没有收到任何错误。

标签: javascript node.js ejs


【解决方案1】:

有两种方法可以做到!

正如EJS的文档中提到的:

<%# commented out code %>

<%/* multiple lines commented out code*/%>

例如:

<%# include('includes/head.ejs') %>
</head>

<body>
    <%# include('includes/navigation.ejs') %>
    <h1>Page Not Found!</h1>

<%- include('includes/end.ejs') %>

【讨论】:

    【解决方案2】:

    有两种解决方案:

    • &lt;%# comment %&gt;(来自documentation
    • &lt;%/* comment */%&gt;(也可以,但是很丑,用起来不舒服)

    除了突出显示 IDE 中的语法(Brackets IDE 的示例)之外,我看不出这些示例之间的区别。

    【讨论】:

      【解决方案3】:

      上面还写着 here 关于 cmets 的内容,您可以在下面发表评论:

       <%# code %>
      

      【讨论】:

        【解决方案4】:

        &lt;% /* */ %&gt; 格式的多行示例。

        <% /* %>
        <div>
            <span>This will not be rendered</span>
            <% for(var i=0; i < data.length; i++) { %>
              <span>These won't be rendered either.</span>
            <% } %>
        </div>
        <% */ %>
        

        【讨论】:

        • 这是这个问题的好答案。发问者显然需要其中带有 ejs 标签的多行注释,并且在这种情况下, 和 (以这种确切的形式)都不起作用。跨度>
        • 当里面有变量时它不起作用
        【解决方案5】:

        这很难看,但它有效:

        <%if (false) {%>
        <div>
            <span>This will not be rendered</span>  
        </div>
        <%}%>
        

        【讨论】:

          【解决方案6】:

          我发现这对我很有帮助。它很简单,多行且不与任何东西冲突。

              <%if(false) {%>  
                  <ul>
                  <% for(var i =1; i <= 10; i++) { %>
                      <li>
                          Hello this is iteraiton <%=i %>
                      </li>
                  <% }%>
                  </ul>
                  <%- include('./meow') %> 
              <%} %>
          

          【讨论】:

            猜你喜欢
            • 2018-04-15
            • 2022-01-21
            • 2020-06-14
            • 1970-01-01
            • 2012-01-26
            • 1970-01-01
            • 1970-01-01
            • 2015-03-23
            • 1970-01-01
            相关资源
            最近更新 更多