Показать сообщение отдельно
  #2 (permalink)  
Старый 19.08.2019, 18:44
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Знаете, я уж отвечал на этот вопрос - так сказать, "в практическом смысле", - потом удалил свой ответ (раз он спрашивающему не интересен, то чего им маячить?)
Но теперь я ещё раз на него отвечу - на этот раз "по существу". Зачем? -- А потому что мне обидно, что единственный нормальный русскоязычный форум про Node.js выглядит умирающим.
Итак, ответ по существу.

Когда-то давно умные люди придумали специальное устройство ("девайс") для общения в сети Энторнеты, оно называется "браузер". Это устройство умеет делать только три вещи - изготовлять из html-строки "документ-объектную модель" (DOM), разукрашивать её (DOM) всякими цветами и размерами (CSS) и динамически - если надо - её изменять (JavaScript) в рамках полученного "документа". Больше это тупое устройство - "браузер" - ничего делать не умеет.

Обратим внимание на его последнее (в списке) умение.
Что делает в браузере код на языке JavaScript типа такого?
document.querySelectorAll(".someClass");

Поскольку тупой браузер - при помощи своего первого умения - уже построил из "документа" (т.е., фактически, из банальной строки, полученной в виде октет-стрима по интернетам) "документ-объектную модель", то данный код имеет возможность обратиться к этой самой DOM и выбрать из неё (из объекта - выбрать подобъекты) кусочки, удовлетворяющие условиям выборки. И если мы в консоле браузера напишем магические букавы:
console.log(document.querySelectorAll(".someClass");)

то тупой браузер нам тут же, в консоль, и напишет искомую NodeList, т.е. "СПИСОК УЗЛОВ DOM (document-object-model)".

Проблемка заключается в том, что NodeList ("список узлов DOM") существует только в браузере.

А что делает крутой модуль Nightmare? (я его попробовал - он, и вправду, крутой)
1. Делает запрос по указанному URL и получает в ответ html-строку в виде октет-стрима.
2. Вызывает браузер Chromium (как он есть "ядро" десктопного приложения Электрон) и просит создать из полученного "документа(строки)" DOM.
3. На языке JavaScript обращается к созданной DOM с запросом коллекции
document.querySelectorAll(".someClass");
и получает ответ в виде "кусочков подобъектов, собранных из объекта"... в виде чего?...
4. Поскольку Nightmare - это не тупой браузер, то она получает результат своего запроса - в виде той самой СТРОКИ, которую браузер когда-то получил и интерпретировал как "Документ-Объектную-Модель".

Nightmare - это не браузер, она не умеет оперировать "узлами DOM" (теми самыми, которыми браузер так услужливо изображает нам у себя в консоли в ответ на наш запрос). В качестве ответа она умеет понять только "строку".

Ну всё, я устал.
Если кто не согласен с ответом - милости прошу разъяснить детали.

А если не последует разъяснений - ну и хуй с ним, с форумом.

Последний раз редактировалось Audaxviator, 19.08.2019 в 18:50.
Ответить с цитированием