2017-11-13 3 views
0

サーバーとの通信を処理するために、私の角型アプリケーション内にexpressを追加しようとしています。私はそれを行う方法についてオンラインで検索し、どのように発見した。しかし、私はほとんど何も理解していませんでした。Expressアプリケーションファイル内のエクスプレスサーバー

私はserver.jsと呼ばれる新しいファイルを追加しました:

const express = require('express'); 
const path = require('path'); 
const http = require('http'); 
const bodyParser = require('body-parser'); 

//Get our API routes 

const api = require('./server/routes/api'); 
const app = express(); 

//Parsers for POST Data app.use(bodyParser.json()); 

app.use(bodyParser.urlencoded({ extended: false })) 

//Point static path to dist 

app.use(express.static(path.join(__dirname, 'dist'))); 

//Set our API routes 

app.use('/api', api); 

// Catch all other routes and return the index file 

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

/** * Get port from environment and store in Express. */ 

const port = process.env.PORT || '3000'; app.set('port', port); 

/** * Create HTTP server. */ 

const server = http.createServer(app); 

/** * Listen on provided port, on all network interfaces. */ 

server.listen(port,() => console.log(`API running on localhost:${port}`)); 

そして、私は新しいフォルダを追加する必要がserverと呼ばれ、別のフォルダの中にapi.jsファイル、その後routesと呼ば:

const express = require('express'); 

const router = express.Router(); 

/* GET api listing. */ 
router.get('/', (req, res) => { 
    res.send('api works'); 
}); 


module.exports = router; 

何これらの2つのファイルの違いは?一緒に組み合わせることはできますか?

答えて

1

2つ目のAPIルートは独自のAPIルートを定義するためだけに使用する必要がありますが、これらを組み合わせることができますが、server.jsがかさばることになります。

ここでの主な考え方は、懸念事項を分けることです。 server.jsを使用してサーバーレベルの処理(エラー処理、CORS設定など)を行うことができます。一方、APIルートを定義するにはapi.jsを使用する必要があります。

最終的にserver.jsはノードサーバーを起動するために使用されるものであり、よく見ればこのファイルは内部でapi.jsを使用します。

const api = require('./server/routes/api'); 
... 
... 
app.use('/api', api); 
+0

api.jsには、htmlコンポーネントのルートではなく、データを取得するルートが含まれていますか? – droidnation

+0

@droidnation - APIルートがHTMLを返さないと仮定すると、私の答えは「はい」になります。 – 31piy

関連する問題