Доступ к элементам визуализированной HTML-страницы из Javascript, запущенного узлом - PullRequest
0 голосов
/ 10 апреля 2019

Я рендеринг HTML-страницы из JavaScript.Мне нужно периодически обновлять определенное содержимое.Я запускаю свой JS с узла, я использую метод sendFile () для рендеринга содержимого HTML на мой локальный хост.Вопрос в том, как мне получить доступ к элементам в визуализируемом содержимом?

Один из возможных подходов, о котором я думаю, - это webscraping.Я следую последовательности в моем index.js следующим образом: readFile (myHtml) -> очистить и изменить содержимое -> renderFile (myHtml) .. это единственный метод?Или у нас есть какие-нибудь элегантные методы?Я знаю, что в Angular есть способ, но сейчас я использую простой ванильный JS и хочу быстро исправить.

Спасибо,

1 Ответ

0 голосов
/ 17 апреля 2019

Я провел много исследований по моему вышеупомянутому вопросу, так как ответа не было, поэтому в конце концов нашел правильное решение моей проблемы. Таким образом, ответ, которым я собираюсь поделиться, не является прямым ответом на вышеупомянутый вопрос, но общее решение, которое я искал во-первых. Признаюсь, я не поделился всей своей проблемой, я просто пытался быстро исправить препятствие на моем пути в предыдущем подходе.

Я хотел периодически обновлять свою веб-страницу, используя маркер доступа, срок действия которого истекает после сеанса. В моем предыдущем подходе я использовал backend для обработки обеих задач, получая токен с сервера аутентификации, а также обновлял свою веб-страницу. Итак, я загрузил html из бэкэнда и подумал о том, чтобы каждый раз обновлять его новыми значениями, поэтому я смог очистить его, обновить и получить новую страницу, готовую к работе. Однако каждое обновление было неудачным из-за сбоя методов res.send () или res.writeFile () с сообщением об ошибке «Err: заголовки уже установлены, заголовки не могут быть снова установлены».

Итак, я посмотрел на свою архитектуру и понял, что было бы возможно разделить задачи между внешним и внутренним интерфейсом. Таким образом, страница обновлялась сценарием внешнего интерфейса каждый раз с использованием токена, передаваемого бэкэндом, бэкэнд получал свежий токен до истечения сеанса и передавал его во fronend с помощью socketio. Существует несколько способов передачи значений между fronend и backend, но я считаю, что это намного удобнее, и мы также можем использовать пользовательские события.

Итак, урок, который я извлек из этого, заключается в том, что «когда проблема настолько необычна, пересмотрите свою архитектуру».

Надеюсь, этот пост поможет кому-то в подобной ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...