2014-11-22 6 views
1

노드를 처음 사용합니다. 내 서버의 대부분은 구성 내 웹 페이지에서 버튼 클릭에서 함수를 실행하려면 어떻게 동작시 노드 기능 활성화

app.get('/page.html', function (req, res, next){ 
    res.render("page.html"); 
}); 

같은 문장, 미들웨어 및 물건을 필요로? require 문에서 끝까지 모든 서버 스크립트가 각 연결에서 실행됩니까?

답변

1

클릭시 액션 트리거는 일반적으로 프런트 엔드가 시작해야하는 항목입니다. 백엔드 경로 중 하나에 Ajax 요청을 발생시킵니다. 길을 가자.

var successfulCalls = 0;  
app.get('/my-action', function(req, res) { 

    // you can do your action here 
    //like calling a database or something 
    // then you need to, eventually, close the request. 
    db.get('somedata') 
    .then(function(results) { 

     res.json(results); 
     successfulCalls++; 
    }) 
    // also handle errors 
    .catch(function(err) { 
     res.status(500); 
     res.end(); 
     }); 
}); 

거기에는 세 가지 기능이 있습니다. 익스프레스는 그 (것)들에게 조회를 제외하고 그 (것)들 어딘가에 붙들 것이다.

요청이 들어 오면 /my-action과 일치하면 첫 번째 기능을 호출합니다. 요청이 URL과 일치 할 때마다이 함수가 호출됩니다.

db 호출이 성공하면 두 번째 함수가 호출되고 db가 실패하면 세 번째 함수가 호출됩니다.

각 요청마다 미리 정의 된 몇 가지 기능 만 실행됩니다. 또한 성공적인 호출 로깅과 같이 요청간에 상태를 저장할 수도 있습니다. 내 엄지 손가락이 지금 상처 때문에

나는 :-)

+1

) 이제 엄지 손가락에 대해 조금 유죄입니다. 네가 올 때 내 대답을 쓰는 데 이미 중반이었다. :) – Avaq

+0

그리고 당신의 대답과 제가 서로를 잘 보완하고 있습니다, 그래서 노력은 낭비되지 않았습니다 :-) – Zlatko

2

은에서와 같이, 각 연결에서 실행되는 전체 서버 스크립트는 마지막에 문을 필요합니까,이 말이 희망?

노드 애플리케이션은이 프로세스를 계속한다. 시작하면 require 문을 포함하여 스크립트가 실행되며 그 시간 (시작 시간) 동안 상태 및 등록 콜백 (예 : app.get(..)으로 수행중인 작업)이 선언됩니다.

시작 시간이 지나면 응용 프로그램은 이벤트를 기다리는 콜백이있는 한 계속 실행됩니다. 웹 서버에서는 항상 "요청"이벤트를 기다리고 있기 때문에 영원합니다. 요청 이벤트가 트리거되면 (들어오는 연결로 인해) 콜백 (예 : 사용자의 것과 같은)이 호출되며 이는 각 연결에서 반복적으로 실행되는 유일한 것입니다.


어떻게 내 웹 페이지에서 버튼 클릭에서 함수를 실행합니까?

페이지에서 실행 중이므로 (사용자 "클릭"등에 응답 할 수있는) JavaScript는 서버에서 (노드에서) 실행되는 JavaScript와 다릅니다.

<head> 
    <script type="text/javascript" src="http://my-server.example.com/client-script.js"></script> 
</head> 

그리고 서버에 호스팅 : 당신이 처리 할 것이라고 스크립트에서

app.get('/client-script.js', function(req, res){ 
    res.sendFile('assets/client-script.js'); 
}); 

당신이 HTML 페이지에 포함해야 자바 스크립트가 클라이언트 (브라우저)에서 실행해야하기 위해 버튼을 누르십시오.버튼이 눌려 졌다는 것을 서버에 알리려면 서버에 다른 요청을 보내야합니다. 사용자를 다른 페이지로 리다이렉트하거나 AJAX 요청을 보내는 것. 그런 다음 특정 요청을 수신하는 서버의 다른 경로가 있어야합니다 (예 :

app.post('/button-was-pressed', function(req, res){ 
    console.log('We have a winner.'); 
});