我是NodeJs
和Angular
的新手,并且我已经使用{{3}}创建了简单的Nodejs应用程序,但是没有关于如何在Nodejs旁边安装Angular的示例。我尝试在根文件夹中运行ng new angular-crud
,并在angular-crud
文件夹中创建了root
文件夹。现在,我有2个node_modules文件夹,第一个位于root
文件夹中,第二个位于angular-crud
文件夹中。
a)安装 ::如何安装Angular,以便始终只有一个node_modules文件夹。
b) RUN :: Nodejs应用程序使用命令node app.js
运行,其中app.js
是entry point
,但是Angular应用程序使用{ {1}}。
如果我同时安装了Nodejs和Angular,那么如何运行该应用程序。
c)结构 ::当一起使用Node和Angular时,理想的文件夹结构应该是什么。
我的package.json文件:
ng serve
我的app.js文件:
{
"name": "test-na",
"version": "0.0.1",
"dependencies": {
"body-parser": "^1.18.3",
"cors": "^2.8.4",
"express": "^4.16.3"
},
"description": "test",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
答案 0 :(得分:2)
将客户端和服务器代码分成两个独立的目录。
答案 1 :(得分:1)
Angular用于创建单页应用程序:如果您不执行服务器端渲染,则可能不应该将Angular应用程序嵌入到nodeJs应用程序中。
相反,Angular应用程序应该位于其自己的文件夹中(并且通常位于其自己的服务器中),并通过触发API调用与nodeJs应用程序连接。
例如,您可以拥有域https://acme.com来静态地为Angular应用程序提供服务,并且您的Angular应用程序将针对https://acme.com/api/v1/执行api请求。
除非您需要server side rendering(我对Angular SSR几乎一无所知),否则将Angular嵌入nodeJs应用程序可能不会带来任何好处。 If you follow the Angular deploy guide,您将看到服务和部署Angular应用程序的预期形式是从Apache或Ngnx静态服务Angular应用程序。
答案 2 :(得分:0)
非常简单,首先使用angular cli创建新的角度项目,或者也可以克隆已经存在的角度项目。然后添加名为 server 的文件夹,它将包含您所有的节点服务器文件。让app.js文件保存在根目录中(服务器文件夹外部)
您的文件夹结构将如下所示:
e2e
src
server
node_modules
karma.conf.js
package.json
tslint.json
tsconfig.json
protracter.conf.js
README.md
app.js
然后您可以将节点服务器的必需依赖项(例如express,body-parser)添加到package.json中。
通过节点服务器提供角度服务
将以下行添加到app.js文件中,dist文件夹将是您的构建文件夹,该文件夹将在您执行 ng build
app.use(express.static(path.join(__dirname, '/dist')));
答案 3 :(得分:0)
You need to make some changes in app.js as shown below. And also, angular-cli should be installed. And then run the following commands:
Your app.js file should look like the following
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
const http = require('http');
const app = express();
// Parsers
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false}));
// Angular DIST output folder
app.use(express.static(path.join(__dirname, 'dist')));
// Send all other requests to the Angular app
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/index.html'));
});
//Set Port
const port = process.env.PORT || '3000';
app.set('port', port);
const server = http.createServer(app);
server.listen(port, () => console.log(`Running on localhost:${port}`));