Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将express和node设置为现有的仅限前端的Angular 2项目?_Javascript_Node.js_Angular_Express_Mean Stack - Fatal编程技术网

Javascript 如何将express和node设置为现有的仅限前端的Angular 2项目?

Javascript 如何将express和node设置为现有的仅限前端的Angular 2项目?,javascript,node.js,angular,express,mean-stack,Javascript,Node.js,Angular,Express,Mean Stack,我有一个当前仅使用Angular CLI和NPM的前端Angular 2应用程序。我希望访问者能够通过联系表向我发送电子邮件 为此,我显然需要一个后端、express和node,在其中我没有使用经验 我需要将express和node集成到我的应用程序中,但我不知道如何正确执行此操作 我也发现了类似的问题,但与我的情况无关 其他教程仅展示如何构建平均堆栈应用程序,而不是在构建前端后集成后端 我想知道的: 如何将Angular 2应用程序设置为在后端使用express和node 我需要哪些相关文件

我有一个当前仅使用Angular CLI和NPM的前端Angular 2应用程序。我希望访问者能够通过联系表向我发送电子邮件

为此,我显然需要一个后端、express和node,在其中我没有使用经验

我需要将express和node集成到我的应用程序中,但我不知道如何正确执行此操作

我也发现了类似的问题,但与我的情况无关

其他教程仅展示如何构建平均堆栈应用程序,而不是在构建前端后集成后端

我想知道的

  • 如何将Angular 2应用程序设置为在后端使用express和node
  • 我需要哪些相关文件
  • 我可以使用Angular CLI执行此操作吗

设置使用angular cli构建的项目以使用nodejs/express后端的最佳方法是简单地创建一个提供目录的express项目。在您的客户机项目中,如果它是使用angular cli创建的,您应该能够只键入
ng build
,它会将所有内容编译到
dist
目录中

从那里,您可以创建一个express server,为
dist
目录提供服务,如下所示:

app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist/index.html'));
});
您可以构建的最简单的服务器可能是

var express = require('express')
var path = require('path');

var app = express()

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

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
});
这将拦截所有路由并将它们重定向到创建的
dist/
文件夹中的
index.html
文件

有关如何设置此设置和一些更高级设置的详细信息,请查看以下链接:

只需将
dist/
文件夹视为将通过express服务器提供的静态文件,因为路由和所有内容都是通过angular处理的,所以您可以设置