簡體   English   中英

如何僅在沒有JS代碼的EJS上使用socket.io?

[英]How to use socket.io with only EJS without JS code?

這是我在EJS中的代碼,它基於某些參數從我的節點服務器實時接收數據。

<!DOCTYPE html>
<html lang="en">
<head>
    <% include ../partials/head %>
</head>
<body class="container">

<header>
    <% include ../partials/header %>
</header>

<main>
  <script src="/socket.io/socket.io.js"></script>
  <table cellpadding="2" cellspacing="2" border="0" width="100%" align="center">
  <thead>
      <tr>
          <th>Name</th>
          <th>IsOnline</th>
          <th>Location</th>
      </tr>
  </thead>
      <tbody id="tableData"></tbody>
  </table>
  <script type="text/javascript">
  var socket = io();
  socket.on('status', function(data){
    var k = '<tbody>'
    for(i = 0;i < data.length; i++){
        k+= '<tr>';
        k+= '<td>' + data[i].url + '</td>';
        k+= '<td align="justify">' + data[i].name + '</td>';
        k+= '<td align="justify" width="30%">' + data[i].status + '</td>';
        k+= '<td align="justify" width="30%">' + data[i].loc + '</td>';
        k+= '</tr>';
    }
    k+='</tbody>';
    document.getElementById('tableData').innerHTML = k;
  });
 </script>
</main>

<footer>
    <% include ../partials/footer %>
</footer>

</body>
</html>

這段代碼可以正常工作,但是我有兩個問題:

  1. 我無法找出一種干凈的方法來根據條件更改IsOnline值的文本顏色,例如:如果用戶處於脫機狀態,則文本應為Offline ,為紅色,否則為綠色。
  2. 另外,我已經使用js和html創建了該表,因為EJS中沒有數據變量,所以有某種方法可以獲取此變量。 我不想使用res.render()ejs.compile()發送數據

以下對我有用:

for(i = 0;i < data.length; i++){
    var color = data[i].status === "Offline" ? "red" : "green"; // If status is 'Offline', use red. If not use green

    k+= '<tr>';
    k+= '<td>' + data[i].url + '</td>';
    k+= '<td align="justify">' + data[i].name + '</td>';
    k+= '<td align="justify" width="30%" style="color: ' + color + '">' + data[i].status + '</td>';
    k+= '<td align="justify" width="30%">' + data[i].loc + '</td>';
    k+= '</tr>';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM