#javascript #node.js #html
#javascript #node.js #HTML
Вопрос:
Я визуализирую HTML-страницу из javascript. Мне нужно периодически обновлять определенное содержимое. Я запускаю свой JS с узла, я использую метод sendFile() для отображения содержимого HTML на моем локальном хостинге. Вопрос в том, как мне получить доступ к элементам в отображаемом содержимом?
Один из возможных подходов, о котором я думаю, — это создание веб-страниц. Я следую последовательности в моем index.js следующим образом: ReadFile(myHtml) -> очистить и изменить содержимое -> RenderFile(myHtml).. это единственный метод? Или у нас есть какие-нибудь элегантные методы? Я знаю, что в Angular есть способ, но в данный момент я использую простой ванильный JS, и я хочу быстро исправить ситуацию.
Спасибо,
Ответ №1:
Я провел много исследований по моему вышеуказанному вопросу, поскольку ответа не было, поэтому, наконец, нашел правильное решение моей проблемы. Итак, ответ, которым я собираюсь поделиться, — это не прямой ответ на приведенный выше вопрос, а общее решение, которое я искал в первую очередь. Признаюсь, я не поделился всей своей проблемой, я просто пытался быстро устранить препятствие на моем пути в предыдущем подходе.
Я хотел периодически обновлять свою веб-страницу, используя токен доступа, срок действия которого истекает после сеанса. В моем предыдущем подходе я использовал серверную часть для обработки обеих задач: получения токена с сервера аутентификации, а также обновления моей веб-страницы. Итак, я загрузил html из бэкэнда и подумал о том, чтобы каждый раз обновлять его новыми значениями, поэтому я смог очистить его, обновить, и свежая страница была готова к работе. Однако каждое обновление завершалось сбоем из-за сбоя методов res.send() или res.WriteFile() с сообщением об ошибке «Ошибка: заголовки уже установлены, не удается снова установить заголовки».
Итак, я посмотрел на свою архитектуру и понял, что было бы разумно разделить задачи между интерфейсом и серверной частью. Таким образом, страница обновлялась скриптом внешнего интерфейса каждый раз, используя токен, передаваемый серверной частью, серверная часть получала новый токен до истечения срока действия сеанса и передавала его интерфейсу с помощью socketio. Существует несколько способов передачи значений между интерфейсом и серверной частью, но я нашел это намного удобнее, и мы также можем использовать пользовательские события.
Итак, урок, который я извлек из этого, таков: «когда проблема настолько необычна, пересмотрите свою архитектуру».
Надеюсь, что этот фрагмент сообщения поможет кому-то в подобной ситуации.