14

Angular2 CLI webpack を使用しているプロジェクトを作成するために、Angular2 を使用して Web アプリを構築しています。Angular2 アプリは他の外部パッケージも使用します (例: Firebase)。それに加えて、node.js で実行される REST API を作成する必要があります。

node.jsサーバーを使用してAngular2アプリとREST APIの両方を提供するにはどうすればよいですか

4

6 に答える 6

15
  1. ng buildアプリをビルド ディレクトリにビルドするために使用します。
  2. ビルド ディレクトリを静的コンテンツとして提供する nodejs アプリを作成し、api のルートを作成します。

以下は、Angular2 アプリを提供する Express を使用する nodejs アプリの例です。

/*
Put content of angular2 build into 'public' folder.
*/
const html = __dirname + '/public';

const port = 4000;
const apiUrl = '/api';

// Express
const bodyParser = require('body-parser');
const compression = require('compression');
const express = require('express');
var app = express();

app
    .use(compression())
    .use(bodyParser.json())
    // Static content
    .use(express.static(html))
    // Default route
    .use(function(req, res) {
      res.sendFile(html + 'index.html');
    })
    // Start server
    .listen(port, function () {
        console.log('Port: ' + port);
        console.log('Html: ' + html);
    });

// continue with api code below ...
于 2016-10-04T14:47:34.773 に答える
2

これが機能している完全なバックエンドコードです

const express = require('express');
var app = express();
var port = 9999;

function getRoot(request, response) {
    response.sendFile(path.resolve('./public/angular/index.html'));
 }

 function getUndefined(request, response) {
     response.sendFile(path.resolve('./public/angular/index.html'));
 }


 app.use(express.static('./public/angular'));

 app.get('/', getRoot);
 app.get('/*', getUndefined);

 // Start server
 app.listen(port, function () {
    console.log('server running at port: ' + port);
}); 
于 2019-12-24T07:27:37.890 に答える
1

Express node server with Angular 2 CLIドキュメントに従って、Node.js サーバーを介してアプリケーションを提供します。アプリケーションは、Node.js と REST フル API を介して提供されています。この REST を要件として設計できます。

例えば

http://localhost:5000/appでアプリケーションを提供します

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

また

http://localhost:5000/rest/contactsを使用して REST 呼び出しからデータを提供する

app.get('/rest/user', function(req, res) {
    res.send({
        "id": 2,
        "name": "Jhon",
    })
});
于 2016-11-15T06:27:45.163 に答える