我是Angular的初学者。我有一个nodejs服务器,前端有Angular。现在我想知道两个服务器是否可以只有一台服务器? 因为在youtube的一些视频中,他们有一个服务器用于节点,一个服务器用于角度。
谢谢你,再见
答案 0 :(得分:0)
是的,两者都可以有一台服务器。
您可以通过NodeJS服务器上最喜欢的HTTP服务器(例如express
)将AngularJS文件作为静态文件提供,如下所示:
app.use(express.static(path.join(__dirname, 'client')))
其中client
是包含前端内容的目录。
答案 1 :(得分:0)
在基本级别,您需要为构建的静态Angular文件设置静态路径,如果您使用的是Angular路由,则可能需要将所有请求定向到index.html
Angular项目,以便Angular可以处理所有客户端路由。
例如,为位于由express-generator创建的默认public
文件夹中的内置Angular CLI项目设置静态路径。该示例使用dist
,因为这是执行ng build
时Angular CLI项目的默认目标。
app.use(express.static(path.join(__dirname, 'public', 'dist')));
Catch-all路由将任何未被Express应用程序路由定义捕获的请求(例如返回JSON数据或类似的RESTful路由)引导到Angular项目的index.html
:
// some routes
var users = require('./routes/users');
app.use('/users', users);
// other routes
var todos = require('./routes/todos');
app.use('/todos', todos);
// catch-all route
// needs to go AFTER all other express server route definitions
app.use('*', (req, res) => res.sendFile(path.join(__dirname, 'public', 'dist', 'index.html')));
如果使用Angular CLI,在开发期间,您可以使用proxy单独运行项目。
希望这有帮助!