如何在app.js文件中包含EJS文件?

时间:2018-11-11 21:13:22

标签: javascript node.js express 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,因为那里没有声明变量。

1 个答案:

答案 0 :(得分:0)

  

如何在app.js中访问变量x,因为那里没有声明变量。

你不知道。不直接。变量x位于客户端计算机上运行的浏览器内部,对服务器或服务器计算机不直接可用或不可见。

当浏览器中正在运行的网页中的Javascript中有一个变量时,将其传递到服务器的唯一方法是对服务器进行Ajax调用或将该值嵌入URL并请求网址中包含该值的新页面(作为路径或查询参数的一部分)。

要进一步了解,让我们回顾一下node.js服务器中EJS文件的工作原理。

  1. 浏览器请求页面(由您的EJS文件表示)。
  2. 您的服务器收到对该页面的请求。
  3. 服务器收集该页面的所有相关数据,然后将该数据放入对象中,然后呈现EJS页面。这将扩展EJS页面并将任何所需的数据合并到页面中。
  4. 呈现的EJS页面作为对原始HTTP请求的响应发送到浏览器。
  5. 浏览器接收到现在的HTML页面(呈现的EJS页面),对其进行解析并显示。
  6. 浏览器解析并运行页面中的所有脚本标签。

在浏览器中运行脚本时,它们是与服务器完全独立的环境。它们在浏览器的客户端计算机上运行,​​而不是在服务器计算机上运行。要与服务器共享网页中的数据,您必须启动与服务器的一些通信并向服务器发送一些数据。有很多方法可以做到这一点。例如,您可以对服务器进行Ajax调用,从网页发送数据,让服务器接收到该Ajax请求,然后发送回响应。然后,您的客户端Javascript将获得该Ajax响应,然后可以对该结果执行任何所需的操作(将其插入到网页中,加载其他页面,将其显示给用户,等等)。


如果您更具体地告诉我们您要使用值x做些什么,那么我们可以就如何实现这一点提出更详细的建议。