2016-05-27 2 views
0

Я все еще изучаю REST, node.js и вообще веб-разработку. Я выяснил, что xmlhttprequest в основном (если не всегда) используется при использовании AJAX. Как я узнал, AJAX предназначен для асинхронного Javascript и XML. Поэтому мой вопрос в том, должен ли я использовать xmlhttprequest в моем проекте node.js, только когда я хочу делать асинхронные части на своей веб-странице? или HTTP-узел node.js также имеет возможность асинхронного javascript? Как я могу хорошо сбалансировать использование HTTP и xmlhttprequest (или AJAX), чтобы я не стал слишком беспорядочным во всех моих ресурсах REST API?Должен ли я использовать HTTP или xmlhttprequest на node.js? Когда?

P.S. Я вроде бы не хочу использовать AJAX из-за XML. Я слышал, что XML намного тяжелее данных, чем JSON, и его больше не стоит использовать. Это правда? Что бы вы мне порекомендовали?

ответ

1

не async на узле?

MRW reading node.js non async

вы пытаетесь построить конечную точку API, так что все остальные случаи не используя асинхра должны быть выброшены в окне. Как только у вас будет один неасинхронный код в проекте node.js, он заморозит весь процесс до его завершения. Помните, что Node.js запускает один поток (теоретически), что означает, что все другие одновременные пользователи будут заморожены. Это один из способов заставить людей расстраиваться.

скажем, например, вам нужно прочитать файл с вашего сервера Node.js по запросу от клиента (скажем, в браузере), вы хотите сделать его обратным вызовом/обещанием, никогда не выполняйте неасинхронный с API сервера просто нет причин не (в вашем случае).

пример ниже

import * as express from "express"; 
 
import * as fs from 'fs'; 
 

 
let app = express(); 
 

 
app.get('/getFileInfo', function(req, res) { 
 
    fs.readFile('filePath', 'UTF-8', function(err, data) { 
 
     if (err) { 
 
      console.log(err); 
 
      res.json({error: err}); 
 
     } else {   
 
     res.json({data: data}); 
 
     } 
 
    }) 
 
}); 
 

 
//users will freeze while the file is read until it is done reading 
 
app.get('/nonasync', function(req, res) { 
 
    let data = fs.readFileSync('path', 'utf-8'); 
 
    res.json({data:data}); 
 
});

точно такая же идея относится к вашему веб-браузер .. если вы собираетесь не делать что-то асинхронная в браузерах Javascript весь веб-приложение будет отвечать на запросы потому что он также работает таким же образом, он имеет один основной цикл и, если они не находятся в обратных вызовах/обещаниях/наблюдаемых, сайт замерзнет. Ajax - это намного более удобный способ реализовать пост/get/put/delete/get: id с сервера, а затем XMLHttpRequest. теперь обе они имеют возможность отправлять и получать JSON не только XML. Ajax более безопасен из-за поддержки различных спецификаций совместимости браузеров, поскольку XMLHttpRequest имеет некоторые ограничения в IE и Safari, я считаю.

ПРИМЕЧАНИЕ: если вы не используете фреймворк с узлом.JS вы должны, это помогает держать ваши конечные точки аккуратный и проверяемые а также возможность передать проект на другие без них того, чтобы узнать, как вы реализовали свой REQ, рес структурировать

некоторые рамки для узла

  1. Экспресс 4 (мое предпочтение, апи документ действительно очень хороший и сильный
    сообщество)
  2. Restify (используемый Netflix - очень легкий)
  3. Хапи (никогда не используется, но слышал)

некоторые рамки для веб-браузеров, которые могут вам понравиться

  1. угловой 2 (мое предпочтение, как я из стека MEAN)

  2. reactJS (создан большой синий Facebook)

  3. нокаутJS (простой и простой)

все рамки браузера имеют свои собственные функции , но больше склоняются к Наблюдаемым объектам.

+0

Андрей благодарен за ваш ответ. Я думал, что AJAX был таким же, как XMLHttpRequest. Вернее, я думал, что AJAX использовал XMLHttpRequest для создания асинхронных файлов. Я использую экспресс, а также хочу попробовать угловой. Я не использовал стек MEAN, но хочу попробовать весь стек. Ваш ответ был действительно полезен, но я все еще немного смутился. Как использовать AJAX без использования XmlHttpRequest? – Vato

+0

Хорошо, я думаю, что понял. Я думал, что существует только одна библиотека AJAX, которая была XmlHttpRequest. Я понял, что есть много других библиотек. Теперь все имеет смысл :) – Vato

+1

вот большое объяснение SO, извините за смущение вас! то, что я пытался понять, заключается в том, что библиотеки обтекают XML-запрос и дают больше возможностей использования и дают больше API для использования вместо базового XMLHttpRequest, думают о нем как о расширении XMLHttRequests -> лучше ответил [здесь] (http: // stackoverflow.com/questions/4657287/what-is-the-difference-between-xmlhttprequest-jquery-ajax-jquery-post-jquery), но для решения вашей проблемы с xml vs json вам просто нужно указать его в запросе делать. XMLHttpRequest - это API-интерфейс браузера для использования протокола HTTP. – Andrei

Смежные вопросы