Визуализируйте представление с данными в узле JS [NO FRAMEWORK] - PullRequest
0 голосов
/ 27 августа 2018

У меня есть конечная точка с именем /watch, которая получает данные и должна вернуть страницу с заполненными данными. Это приложение не экспресс просто HTTP-сервер

и шаблон ejs view

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Test</title>
  </head>
  <body>
    <div class="container">
        <div>Data</p>
            <ul>
        <% arr.forEach(function(elem) { %>
            <li><%= elem %></li>
        <% }); %>
            </ul>
    </div>
  </body>
</html>

Есть ли эквивалент в узле js

res.render('index', {
        arr: data,
    });

Это фрагмент кода сервера

const server = http.createServer((req,res)=>{

const parsedUrl = url.parse(req.url,true);

const path = parsedUrl.pathname;
const trimmedPath = path.replace(/^\/+|\/+$/g,'')

if(trimmedPath == "watch"){

    var data = await GetData();

            // here where i need to stuck sending the ejs template with data

}

})

1 Ответ

0 голосов
/ 27 августа 2018

Вам просто нужно отправить строку, которую создает ejs.render(). Рассмотрим пример barebones, который показывает EJS: EJS # Get Started и объедините его с HTTP-сервером barebones, который этот узел предоставляет пример для:

const http = require("http");
const ejs = require("ejs");

const template = "<div><%= people.join(',');%></div>";
const people = ["bob", "sue", "steve"];

const server = http.createServer((req, res) => {
    res.end(ejs.render(template, {people}));
});

server.listen(8081, () => {
    console.log("Listening on 8081");
});

Сетевой ответ, который я получаю:

*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8081 (#0)
> GET / HTTP/1.1
> Host: localhost:8081
> User-Agent: curl/7.54.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Mon, 27 Aug 2018 17:10:01 GMT
< Connection: keep-alive
< Content-Length: 24
< 
* Connection #0 to host localhost left intact
<div>bob,sue,steve</div>
...