Подключение Angular-CLI с помощью Express

#node.js #express #angular

#node.js #экспресс #angular

Вопрос:

Я сгенерировал проект Angular2 с помощью Angular-CLI. Это интерфейсная сторона. Теперь я хотел бы добавить экспресс-сервер, но я не знаю, как именно мне это сделать.

Должен ли я добавить экспресс app.js файл в сгенерированный Angualar-CLI каталог «src»? Я попробовал это, и что дальше? Чтобы запустить проект Angular-CLI, мне нужно ввести ng serve CMD. Чтобы запустить сервер, мне нужно ввести node app.js .

Пример app.js

 var express = require('express'),
    path = require('path'),
    favicon = require('serve-favicon'),
    logger = require('morgan'),
    cookieParser = require('cookie-parser'),
    bodyParser = require('body-parser');

var app = express();

app.get('*', function(req, res) {
  res.sendFile(path.join(__dirname, 'index.html'));
});

app.listen("8080", function() {
  console.log("at 8080 port");
});

module.exports = app;
  

Хорошо… Angular2 не работает при запуске приложения node app.js . ng serve собирает все файлы и таинственным для меня образом объединяет все это.

Может быть, мне следует полностью разделить интерфейс и серверную часть? Но что тогда? Использовать технологию, подобную Nginx, для обратного прокси?

Комментарии:

1. Зачем вам обратный прокси? Для разработки просто отправьте их на отдельные порты на localhost. В общем, интерфейс и серверная часть могут быть полностью разделены, они просто общаются через API.

2. обратный прокси рекомендуется только для производства и тестирования, а не для разработки. Вы должны запускать оба как отдельный проект на другом порту

3. Хорошо, но каким-то образом мне нужно позволить им общаться друг с другом, верно? Я не делал много подобных проектов. Если у меня есть интерфейс на 3000, серверная часть на 8080, как я могу сделать запрос и ответить?

4. Просто, например http.get('http://localhost:8080/whatever/endpoint') , . Express не будет обслуживать HTML, просто предоставляя API; вам, вероятно, было бы лучше просто использовать vanilla Node. JS, может быть, менее запутанным.