#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, может быть, менее запутанным.