2017-11-13 12 views
0

내 서버와의 통신을 처리하기 위해 각도 응용 프로그램에 express를 추가하려고합니다. 나는 그것을하는 방법에 관하여 온라인으로 수색하고, 어떻게 발견했다. 그러나 저는 거의 이해하지 못했습니다.각도 응용 프로그램 파일 내의 Express 서버

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}`)); 

그리고 내가 routes라는 다른 폴더의 새 폴더가 server라고 추가하고 내부에 있어야하고 다음 api.js 파일 :

const express = require('express'); 

const router = express.Router(); 

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


module.exports = router; 

무엇을

나는 새 파일이 server.js라는 추가 이 두 파일의 차이점은 무엇입니까? 함께 결합 할 수 있습니까?

답변

1

두 번째 점은 나만의 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