如何在外部脚本中访问 ejs 变量
How can I access ejs variables in an external script
当我使用 NodeJS 将变量传递到我的 html 页面时,我可以使用内联脚本访问它,如下所示:
// passing myVar from the server
router.get('/', (req, res) => {
res.render('index', { myVar: 'test'});
});
// access in index.ejs
<script>
let myVar = <%- JSON.stringify(myVar) %>;
alert(myVar);
</script>
如果我在这里尝试使用外部脚本而不是内联脚本,我会在使用 ejs 语法时遇到错误 <%- %>
。如何在外部脚本中访问 myVar?
<%-
和 %>
之间的代码是 服务器端代码 。
如果您将其从 EJS 模板文件中移出并移至静态 JS 文件中,那么您无法 获取数据。它不会被替换,您会将 EJS 模板发送到浏览器,而不是在服务器上处理它以生成文档。
如果您将它从生成 HTML 的 EJS 模板文件中移出并移到另一个生成 JavaScript 的 EJS 模板文件中,那么它将正常工作(除了它会有不同的URL 在您的服务器端代码中有不同的端点,因此您需要移动填充您尝试访问的变量的服务器端代码。
你有两个合理的选择:
有两个脚本元素。
一个获取页面的数据:
<script>let myVar = <%- JSON.stringify(myVar) %>;</script>
还有一个包含 JavaScript 逻辑:
<script src="/js/logic.js"></script>
将生成的数据移动到页面中
<div data-myVar="<%- JSON.stringify(myVar).replace(/"/g, """); %>">...</div>
…然后通过DOM.
访问
您可以将您的变量放入数据值中以使用 js 或 jquery 在脚本中获取,例如:
查看 ejs 端:
<div class='test' data-test-value='<%= JSON.stringify(myVar) %'></div>
js 脚本端:
-如果你使用jquery:
var $test = $('.test').attr('data-test-value')
alert($test);
-如果你使用 vanillaJs :
var test = document.getElementsByClassName('test');
var testValue = test[0].dataset.testValue;
alert(testValue)
如果语法错误,我不会参考文档测试我的普通脚本
当我使用 NodeJS 将变量传递到我的 html 页面时,我可以使用内联脚本访问它,如下所示:
// passing myVar from the server
router.get('/', (req, res) => {
res.render('index', { myVar: 'test'});
});
// access in index.ejs
<script>
let myVar = <%- JSON.stringify(myVar) %>;
alert(myVar);
</script>
如果我在这里尝试使用外部脚本而不是内联脚本,我会在使用 ejs 语法时遇到错误 <%- %>
。如何在外部脚本中访问 myVar?
<%-
和 %>
之间的代码是 服务器端代码 。
如果您将其从 EJS 模板文件中移出并移至静态 JS 文件中,那么您无法 获取数据。它不会被替换,您会将 EJS 模板发送到浏览器,而不是在服务器上处理它以生成文档。
如果您将它从生成 HTML 的 EJS 模板文件中移出并移到另一个生成 JavaScript 的 EJS 模板文件中,那么它将正常工作(除了它会有不同的URL 在您的服务器端代码中有不同的端点,因此您需要移动填充您尝试访问的变量的服务器端代码。
你有两个合理的选择:
有两个脚本元素。
一个获取页面的数据:
<script>let myVar = <%- JSON.stringify(myVar) %>;</script>
还有一个包含 JavaScript 逻辑:
<script src="/js/logic.js"></script>
将生成的数据移动到页面中
<div data-myVar="<%- JSON.stringify(myVar).replace(/"/g, """); %>">...</div>
…然后通过DOM.
访问您可以将您的变量放入数据值中以使用 js 或 jquery 在脚本中获取,例如:
查看 ejs 端:
<div class='test' data-test-value='<%= JSON.stringify(myVar) %'></div>
js 脚本端:
-如果你使用jquery:
var $test = $('.test').attr('data-test-value')
alert($test);
-如果你使用 vanillaJs :
var test = document.getElementsByClassName('test');
var testValue = test[0].dataset.testValue;
alert(testValue)
如果语法错误,我不会参考文档测试我的普通脚本