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

Dan*_*Dan 5 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" />
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Bha*_*san 10

你不能

注意:您只能将数据从 .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>
Run Code Online (Sandbox Code Playgroud)

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

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

为什么:

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

  • 我得到了它。.js 文件和 .ejs 文件之间不能进行双向事务。因为ejs文件会在服务器端渲染,js文件会在客户端渲染。您可以将数据从 ejs 传递到 js,但不能从 js 传递回 ejs **(您正在尝试这样做)**。请将答案标记为已验证,以便对其他人有用。 (2认同)