javascript - 如何在 app.js 文件中包含 EJS 文件?
问题描述
我有一个 index.ejs 文件,其中我使用了脚本标签并编写了一些用于 dom 操作的 javascript。现在我想将此文件中的变量用于我的 app.js 文件。如何做到这一点?为了引用 ejs 文件的变量,我们这样做:
{someVariable:value}
我只想反之亦然,即访问在 ejs 文件的脚本标记中声明的变量到 app.js 文件。
//index.ejs
<script>
window.onload=function(){var c = document.getElementById("city_search").options[1].value;
console.log(c);
};
function changeCarousel(){
var x = document.getElementById("city_search").value;
console.log(x);
}
</script>
我如何访问 app.js 中的变量 x,因为它没有在那里声明。
解决方案
我如何访问 app.js 中的变量 x,因为它没有在那里声明。
你没有。不是直接的。变量x
位于客户端计算机上运行的浏览器内部,对您的服务器或服务器计算机不直接可用或可见。
当您在浏览器中运行的网页内的 Javascript 中有一个变量时,将其发送到您的服务器的唯一方法是对您的服务器进行 Ajax 调用或将该值嵌入 URL 并请求一个新页面在 URL 中使用该值(作为路径或查询参数的一部分)。
为了进一步理解,让我们回顾一下 EJS 文件是如何在您的 node.js 服务器上工作的。
- 浏览器请求页面(由您的 EJS 文件表示)。
- 您的服务器收到对该页面的请求。
- 服务器收集该页面的所有相关数据,将该数据放入一个对象中,然后呈现 EJS 页面。这将扩展 EJS 页面并将任何所需的数据合并到页面中。
- 呈现的 EJS 页面作为对原始 HTTP 请求的响应发送到浏览器。
- 浏览器接收现在的 HTML 页面(渲染的 EJS 页面),解析它并显示它。
- 浏览器解析并运行页面中的任何脚本标签。
在浏览器中运行脚本时,它们是与您的服务器完全分开的环境。它们在浏览器中的客户端计算机上运行,而不是服务器计算机。要与服务器共享来自网页的数据,您必须启动与服务器的一些通信并向服务器发送一些数据。有很多方法可以做到这一点。例如,您可以对服务器进行 Ajax 调用,将来自网页的数据发送给它,让服务器接收到该 Ajax 请求,然后发回响应。然后,您的客户端 Javascript 将返回该 Ajax 响应,然后可以对结果执行任何操作(将其插入网页、加载不同的页面、将其显示给用户等)。
如果您更具体地告诉我们您要使用 value 做什么x
,那么我们可以就如何实现这一目标提出更详细的建议。
推荐阅读
- json - 如何从 Python 中的 JSON 数据中获取部分信息?
- python - 奇怪的行为...只有一些文本无法在循环中使用 reporlab 绘制
- python - 重新格式化 json 文件
- pandas - 如何使用 pandas 从 csv 为 value 和 autopct 生成饼图标签?
- cocoa - 将蒙版设置为 CALayer 剪辑子层
- linux - 无法检测到蓝牙设备 - qt.bluetooth.bluez 收到广告错误
- linux - bitbake 失败(“linux-libc-headers”)?
- sqlite - 数据库查询后 Flutter futurebuilder 快照为空,直到热重载
- typescript - 从只读元组类型中过滤掉值
- python - 为什么我使用 Tenserflow 和 Keras GPU 的模型出现 OOM 错误?