Как использовать momet js в представлениях EJS, но получить локальное время пользователей, а не серверы? - PullRequest
1 голос
/ 07 марта 2019

Я сейчас передаю Moment js со своего сервера, используя app.locals.

app.locals.moment = require('moment');

Я пытаюсь вызвать функцию local () при отображении времени, но она все равно отображает, что она получает с сервера.

Можно ли использовать этот метод для отображения времени в часовом поясе пользователя?

1 Ответ

2 голосов
/ 07 марта 2019

JS, который вы запускаете в своих представлениях EJS, будет запускаться на стороне сервера , а затем результат будет передан пользователю. Таким образом, вы не сможете использовать момент на бэкэнде, чтобы получить пользовательский интерфейс по местному времени.

Если вы хотите, чтобы пользователи работали по местному времени, вам понадобится получить его с помощью внешнего интерфейса JS, поэтому вам нужно будет установить версию браузера Instantjs и добавить его в свой код внешнего интерфейса. В любом случае нет возможности узнать местное время пользователей на стороне сервера (например, если они сделали запрос из России, а ваш сервер находится в Австралии, например).

Представления EJS могут сбивать с толку, потому что у вас есть внешний интерфейс JS, который обслуживается браузером, и у вас есть JS в шаблонах, которые запускаются на сервере.

Если вам действительно необходимо получить локальный часовой пояс пользователя для серверной части, вы можете увеличить часовой пояс в первоначальном запросе (возможно, в качестве параметра URL) и получить его таким образом, но если вы делаете это для целей отображения ты не хочешь этого делать.

...