2016-09-11 1 views
2

프런트 엔드 코드가없는 익스프레스 4 API 서버를 작성하고 있습니다. 폴더 구조가 파일 형식 (경로, 모델 등)을 기반으로하지 않고 프로젝트의 비즈니스 논리를 기반으로하도록 프로젝트 구조를 선택했습니다.명시된 앱을 라우트 파일에 전달합니다.

예를 들어, 내 사용자 폴더에 my userRoutes.js, userModel, js, userApi.js, ...

내 주요 질문은 실제로 어떻게 내 경로 파일에 응용 프로그램을 전달해야합니까? 내가 가장 좋아하는 접근 방식은 global.app을 사용하여 글로벌화하는 것이었지만 이것이 최선의 방법은 아니라고 들었습니다. 내 비즈니스 논리 구조에 대한 조언도 있으면 좋을 것입니다.

답변

1

먼저 파일 구조가 처음부터 끝까지 들립니다. 물건을 깔끔하게 쪼개려면 그 정도가 필요하면 그것을 가져 가십시오. 그러나, 나는 당신이 그것을 과용하고 있다는 예감이있다.

내가 일반적으로하는 일은 각 모듈의 리턴 미들웨어입니다. 원하는 경우 각 미들웨어에 자체 Express 라우터를 제공 할 수 있습니다. 주요 응용 프로그램에서 다음

const express = require('express'); 

module.exports = function (config) { 
    const router = new express.Router(); 

    router.get('/something', (req, res) => { 
    // Code here 
    }); 

    return router; 
} 

: 모듈에서

const somethingHandler = require('somethingHandler.js'); 

app.use(somethingHandler); 

이 어떻게 다른 모든 익스프레스 미들웨어 모듈 작업으로 인라인입니다. 또한 기본 앱에서 app.use() 전화를 사용하여 경로별로 모듈 이름을 지정할 수 있습니다. 어쨌든 고마워,

1

당신은 명시 응용 프로그램을 요구하거나 excute에 의해 루트 파일에 통과해야이 같은 기능이 필요합니다

var app = require('express'); 
var userRoutes= require('your route path')(app); 

내가 전역 변수는 것은 좋은 생각이 아니다라고 생각합니다.

+0

여러분이 사람들에게 좋은 프로젝트 구조를 보여주고 싶다면 내가 좋아하는 것을 보길 원합니다. –

관련 문제