Как вызвать функцию NodeJS на стороне сервера с помощью клиентского JavaScript
Я работаю над созданием базовой системы входа в систему, и поскольку на стороне сервера используется NodeJS, а на стороне клиента - нет. Я должен делать любые звонки, которые используют пакеты NPM на стороне сервера. Проблема в том, что я понятия не имею, как вызвать функцию NodeJS на стороне сервера из клиентского JavaScript. По сути, я не хочу вызывать функцию, которая хранится на сервере, из клиентского браузера.
3 ответа
Создайте маршрут в вашем приложении nodejs следующим образом:
app.get('/users', function(req, res) {
// Your function to be called goes here.
});
Теперь вы можете вызывать этот код из своего клиентского javascript, используя ajax. Как это:
$.ajax({
type: 'GET'
url: 'http://localhost:8000/users',
success: function(response) {
console.log(response);
},
error: function(xhr, status, err) {
console.log(xhr.responseText);
}
});
С Socket.io
в JS
let xhr = new XMLHttpRequest(); xhr.open('GET', '/user/sessionDestroy'); xhr.send();
В Node.JS
Создайте API REST и сопоставьте параметры запроса с конкретными вызовами функций, которые вам нужно использовать. Смотрите это руководство по созданию REST API.
Вы делаете это, вызывая API на сервере (определенный URL, который будет выполнять какую-то конкретную работу). В JS вам нужен ajax. Посмотрите здесь
//url be the api like '/api/something/'
$("button").click(function(){
$.ajax({url: "demo_test.txt", success: function(result){
// your response
}});
});
в узле у нас есть axios, которые будут делать тот же пример
axios.post('api/tobackend/function',{user:'a',password:'b'})
.then((res)=>console.log('response from server'))
в поддержке вам может понадобиться маршрут для обработки запроса.
router.post('api/tobackend/function',(reqs,resp)=>{console.log('backend')})