Соединение приложения Node.js с внешним интерфейсом (index.html) - PullRequest
0 голосов
/ 10 ноября 2019
const express = require("express");
require("../db/mongoose");
const Task = require("../model/user");

const app = express();
const port = process.env.PORT || 3000;

app.use(express.json());

app.get("/mytask", (req, res) => {
  Task.find({})
    .then(tasks => {
      res.send(tasks);
    })
    .catch(e => {});
});

app.post("/mytask", (req, res) => {
  const task = new Task(req.body);
  console.log(task);

  task
    .save()
    .then(() => {
      res.send(task);
    })
    .catch(e => {
      res.status(400).send(e);
    });
});

app.listen(port, () => {
  console.log("Server started correcly");
});

Это мое приложение Express, которое подключено к базе данных.

localhost:3000/mytask/

{
    "name": "Test",
    "description": "This is my todo"
}

Это прекрасно работает и правильно хранит данные в моей базе данных Mongodb с запросом POST в Postman.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <h1>Hello Node</h1>

    <form action="/mytask" method="POST">
      <input type="text" name="task" placeholder="task" />
      <input type="text" name="description" placeholder="description" />
      <input type="submit" />
    </form>
  </body>
</html>

Теперь я хочу подключить его к моему интерфейсу. Но как мне это сделать? Это мой HTML-файл. Но index.html не знает о сервере узла. Что мне делать?

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

Я бы не советовал вам использовать res.sendFile, поэтому он будет отправлять только статический HTML. Вы не сможете передать переменную на стороне клиента. есть лучшее решение под названием res.render, но сначала вам нужно настроить движок представления. (здесь решение ejs)

const ejs = require('ejs);
app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');

и после:

app.get('/url', (req,res)=>{
    res.render('yourejsFile')
})

, если вы хотите записывать файлы с расширением html, вы можете использовать

const ejs = require('ejs);
app.engine('html', ejs.renderFile)
app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
0 голосов
/ 10 ноября 2019

вы можете отправить запрос от внешнего интерфейса к localhost: 3000, и если вы хотите, чтобы индекс открывался при посещении localhost: 3000, используйте res.sendFile ()

app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname + '/index.html'))
})

, убедитесь, что импортировалимодуль пути

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...