【发布时间】:2020-07-02 17:47:13
【问题描述】:
我有一个 Angular 6 应用程序和一个现有的 nodejs api 应用程序。 到目前为止,我已经使用了
ng serve
运行和构建 Angular 应用程序。
我现在想从现有的节点 js 服务器提供我的 Angular 应用程序。
我该怎么做?我找不到任何文档。
【问题讨论】:
我有一个 Angular 6 应用程序和一个现有的 nodejs api 应用程序。 到目前为止,我已经使用了
ng serve
运行和构建 Angular 应用程序。
我现在想从现有的节点 js 服务器提供我的 Angular 应用程序。
我该怎么做?我找不到任何文档。
【问题讨论】:
您有两种方式提供 Angular SPA:
通常是 dev:Webpack 运行的服务器,即ng serve。动态的意思是对文件的任何修改都会启动重建并更新输出。
通常是 prod:您为 SPA 构建所有 html/js 文件(使用 ng build [...]),以便由 node 服务器静态提供。
在您的情况下,如果您想使用现有的 node 服务器,这意味着您必须构建文件(使用 ng build),然后连接通常服务于 sn 的 node 静态文件-p 在你的node 应用程序中。
但请注意:每次要更新显示时,都必须进行完整构建。因此,如果不是那么频繁,那没关系,但我猜对于开发环境来说就不行了。
【讨论】:
步骤:
ng build,它将创建一个dist文件夹,您可以轻松地从节点网络服务器框架中提供服务,如express、Hapi或Koa
app.use(express.static(path.join(__dirname, 'dist')));http://localhost:nodeport 这样的 Angular 如果您使用的是 Hapi:请查看https://hapi.dev/tutorials/servingfiles/?lang=en_US
=================================基本快递服务器============ ====
const express = require('express');
const app = express();
const path = require("path");
const fs = require("fs");
//const bodyParser = require('body-parser');
app.use(express.static(path.join(__dirname, 'dist')));
//app.use(bodyParser.json());
//app.use('/api/v1/', require('./api/routes'));
app.listen(8080,function(err){
if(!err){
console.log("server is running at port:8080);
}
})
【讨论】: