Как вызвать функцию 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);
 }
});
  1. С Socket.io

  2. в 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')})
Другие вопросы по тегам