Получение данных, переданных в ejs-файл из включенного js-файла

#javascript #node.js #express #ejs

#javascript #node.js #экспресс #ejs

Вопрос:

Я использую express js и визуализирую файл с помощью

 res.render('plain',{state:'admin'})
  

где plain.ejs — это файл ejs. Этот файл содержит main.js

 <script src ="/main.js"></script>
  

Как я могу получить доступ к переменной состояния в main.js файл , пожалуйста , помогите!!!

Ответ №1:

Вы не можете напрямую. Но вы можете сделать что-то вроде этого :

plain.ejs

 <script>
var state = {{ state }};
</script>
<script src ="/main.js"></script>
  

затем в main.js

 console.log(state);
  

Комментарии:

1. Я пытался, но получаю ошибку Uncaught Синтаксическая ошибка: неожиданный токен {

2. каков ваш разделитель для ejs?

3. Понял! разделителем является <%- %>, и я использовал var state = <%- JSON.stringify(state) %> теперь я могу использовать его в main.js , Большое спасибо!

4. Привет. Я получаю ошибку присвоения свойства, ожидаемого в строке var state = {{ state }}; Пожалуйста, помогите мне

Ответ №2:

Возможно, грязное решение, но вы могли бы создать переменную состояния в глобальной области видимости и main.js сможете получить к нему доступ:

 <script type='text/javascript'>
    var state = '<%= state%>'
</script>

<script src ="/main.js"></script>
  

Если у вас есть дополнительные данные для передачи клиенту, вы можете передать их как объект:

 res.render('plain',{data: {state:'admin', page_title: 'first page'}})
  

А затем просто вывести весь объект следующим образом:

 <script type='text/javascript'>
    var data = <%= JSON.stringify(data)%>
</script>
  

Таким образом, вы могли бы получить доступ к состоянию как by data.state .