2017-12-05 1 views
0

안녕하세요 저는 nodejs에있는 초보자입니다. nodejsevent-driven이 그 안에 강력한 기능입니다.이벤트 구동 아키텍처 노드 js로 편안한 api를 만드시겠습니까?

나는 지난 몇 일에서 nodejs을 배우고 mongodb로에서 편안하고 API를 구축하려고 노력하지만, 나는 아래의 API 년 event-driven 아키텍처를 사용할 수 아니에요 된 것은

//routes 

    app.get('/someUrl', SomeClass.executeSomeController); 


//controller 

    class SomeClass { 
    async executeSomeController(req, res){ 
     let response = awaitSomeHelper.executeQueryAndBusinessLogic(req.body); 
     res.send(response) 
    } 

} 

으로 내 sudo는 코드입니다 내 이해 당 나는 Ror 또는 PHP을 사용하여 작성하는 데 정상적인 코드를 작성했습니다 controllerasynchronous이 실행 중이고 또는 Php에서 발생하지 않는 유일한 차이점을 발견했습니다.

어떻게 편안 API를

답변

0

내가 질문을 커버 할 수있는 희망을 구축 할 event-driven 아키텍처를 사용할 수 있습니다. 기본적으로 '이벤트 중심 아키텍처'라는 용어는 다르게 설명 할 수 있습니다. 하나의 경우에는 모든 비동기 기능을 설명하는 기본 코어 NodeJS 플로우입니다. 다른 경우에는 질문의 근원이 이벤트, 이벤트 이미 터 등과 관련 될 수 있습니다.

하지만 모든 비동기 작업을 기다려야한다는 주요 아이디어가 있습니다. 스레드 블로킹을 피하기 위해 더 많은 요청을 기다리지 않고 코드의 나머지 부분을 처리합니다. 그리고이 비동기 기능을 처리하는 방법을 알아야합니다. 기본 비동기 흐름

내가 알고있는 것처럼

는, 당신은 NodeJS에서 비동기 작업에 관련된 질문 있어요. 이것이 바로 기술의 근원입니다. 모든 과중한 작업은 비동기 적으로 처리됩니다. V8 및 이벤트 루프에 관한 내용입니다.

비동기 작업을 수행하려면 콜백 함수, 약속 또는 비동기 대기 구문을 사용할 수 있습니다.

콜백 기능

function asyncFunction(params, callback) { 
    //do async stuff 
    callback(err, result); 
} 

function callbackFunction(err, result) { 

} 

asyncFunction(params, callbackFunction); 

약속

promiseFunction() 
    .then(anotherPromiseFunction) 
    .then((result) => { 
    //handle result 
    }) 
    .catch((err) => { 
    //handle error 
    }); 

비동기 기다리고

function anotherAsyncFunction() { 
    //do async stuff 
} 

const asycnFunction = async (params) => { 
    const result = await anotherAsyncFunction(); 
    return result; 
}; 

이벤트/E 배기에 미터

const fs = require('fs'); 

const filePath = './path/to/your/file'; 
const stream = fs.createReadStream(filePath); 

stream.on('data', (data) => { 
    //do something 
}); 

stream.on('end',() => { 
    //do something; 
}); 

stream.on('error', (err) => { 
    //do something; 
}); 

상황과 필요에 따라이 방법을 사용할 수 있습니다. 비동기 흐름 (약속 및 비동기 대기)에서 작업 할 수있는 현대적인 방법이 있으므로 콜백 함수를 건너 뛰는 것이 좋습니다. 그건 그렇고, 'async-await'도 약속을 되 돌린다.

다음은 간단한 Express JS Server (꽤 오래된 구문)의 예입니다. 그러나 여전히 유효합니다.확인 자유롭게 쓸하시기 바랍니다 질문 :

https://blog.risingstack.com/node-js-at-scale-understanding-node-js-event-loop/ https://blog.risingstack.com/mastering-async-await-in-nodejs/

: 여기

https://github.com/roman-sachenko/express-entity-based

내가 당신을 권 해드립니다 기사의 목록입니다