Может ли js script получить переменную, написанную в контексте/странице EJS в том же файле

Как я писал в названии, я хотел бы получить значение из переменной, написанной на странице/файле ejs, из файла javascript на той же странице

EJS:

<% var test = 101; %>

JS:

<script>
    var getTest = test;
</script>

Или что, если я хотел бы использовать функцию (с параметром), записанную в файл EJS, и использовать эту функцию в контексте JS, где параметр присваивается функции из контекста JS

EJS:

<% function fn(par){ ... } %>

JS:

<script>
   var test = 101;
   <%>fn(test)<%> 
</script>

Ответ 1

Изменить: эта половина считает, что вы используете EJS на стороне сервер

1) Вы можете передать значение переменной ejs в переменную Javascript

        <% var test = 101; %> // variable created by ejs
        <script>
           var getTest = <%= test  %>;  //var test is now assigned to getTest which will only work on browsers
           console.log(getTest);  // successfully prints 101 on browser
        </script>

просто создайте переменную ejs и присвойте значение внутри тега script var getTest

Пример: var getTest = <%= test %>;

2) Вы не можете передать значение переменной javascript переменной ejs

Да, вы не можете: если он на сервере.

Почему:

Шаблон EJS будет отображаться на сервере до запуска Javscript (он будет запущен в браузере), поэтому на сервер не возвратится сервер и попросите некоторые предыдущие изменения на странице, которая уже отправлена ​​на страницу браузер.


Изменить: эта половина считает, что вы используете EJS на стороне Клиент

3), если EJS находится на стороне клиента и передает переменную EJS в javascript

Вышеприведенный ответ по-прежнему будет работать, но вам потребуется загрузить script в шаблон EJS, а не script, загруженный перед созданным шаблоном (в этом случае он будет из- конечно, не будет действительным javascript).

4), если EJS находится на стороне клиента и передает переменную javascript в EJS

Мне жаль, что я сам не пробовал этот случай, но я действительно жду, если кто-то ответит на этот случай

Ответ 2

Приведенный выше ответ не работает для меня. Вы можете использовать div следующим образом:

<div id="mydiv" data-test=<%= test %>></div>

И доступ к переменной данных 'test', которую вы дали в теге скрипта:

<script>var test = document.getElementById('mydiv').dataset.test</script>

https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset