一尘不染

如何将外部.js文件包含到ejs节点模板页面中

node.js

我找不到将外部.js文件包含到Node
ejs模板中的方法。我想将逻辑和数据放入外部.js文件中的对象中,将该文件包含到index.ejs模板中并从中提取数据。

我尝试通过插入标准方式尝试 <script src="sample.js"></script>,但它不起作用

然后,我尝试了ejs特定关键字<% include partials/sample.js %>,这仅适用于添加部分内容(ejs代码段)。

我将.js文件插入了在可执行server.js中定义的静态目录中,再次没有结果。

但有趣的是,例如,将css文件包含到ejs模板中的经典方法效果很好,例如

<link href="/assets/styles.css" rel="stylesheet" type="text/css" />

解决方法是包括外部ejs文件,在其中将逻辑和数据放在<%%>标记内,但这显然是一个补丁程序,而不是可行的解决方案,因为ejs不是js文件。此外,它不起作用。

我在Internet上找不到任何解决方案。有什么提示吗?

谢谢


阅读 475

收藏
2020-07-07

共1个答案

一尘不染

你不能

注意:您只能将数据从.ejs文件传递到.js文件,而不能以其他方式传递。它不起作用,因为.ejs在服务器端呈现,而.js在客户端运行。我假设您在服务器端使用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>

2)您不能将js变量值传递给ejs变量

是的,您不能: 如果它在服务器上。

为什么:

EJS模板将在开始执行js之前在服务器上呈现(它将在浏览器上启动),因此无法返回到服务器并要求已发送到浏览器的页面上的某些先前更改。

2020-07-07