【问题标题】:is there any way to call axios from ejs?有什么方法可以从 ejs 调用 axios 吗?
【发布时间】:2020-10-22 08:54:26
【问题描述】:

我只是编写了示例文件。

我的ejs文件在收到API调用的数据后显示一些数据。

我的代码如下所示,我的代码模式如下

node(router) --> call api(axios) --> 在ejs文件上显示数据。

//index.js

...
...
router.get('/dashboard', function(req,res,next){
  try {
    let result = await axios({ //Call API
      method: 'get',
      url: 'http://localhost:3001/user',
      data: {
        id: '1129',
        lastName: 'Test'
      }
    }); 
  

      res.render('dashboard', {data: result.data}); //display the received data
    } catch (error) {
      next(error)
  }
})
module.exports = router;
//dashboard.ejs

...
...
<div>
   <p>js data : <%=data%></p> //displays the data I jsut received from Axios
</div>

...
...

但是如果某些客户端类型输入值并且我想使用客户端输入值执行 API 调用(post 或 put)怎么办?

喜欢.. 从 ejs 获取客户端值 --> 将值发送到节点(路由器) --> 调用 api(axios)

有没有办法做到这一点?(没有 ajax,因为我试图不使用 ajax)。

【问题讨论】:

    标签: javascript node.js axios


    【解决方案1】:

    这里有三层。 EJS 是其中最不相关的一种。

    • 在服务器上运行并处理业务逻辑的控制器(传递给router.get 的函数)。
    • 在服务器上运行并处理显示逻辑(将数据转换为 HTML)的视图(EJS 模板)。
    • 在客户端运行的客户端 JS(&lt;script&gt; 元素)

    但是如果某些客户端类型输入值并且我想使用客户端输入值执行 API 调用(post 或 put)怎么办?

    那么你有两个选择:

    • 将&lt;form&gt; 提交到由控制器处理的 URL(然后使用 axios 服务器端,获取一些数据,填充 EJS 视图并将新页面返回给客户端)。
    • 使用客户端 JS 读取数据,使用 Ajax 将其发送到 URL(可能是您提供的由控制器处理的 URL),让控制器返回数据(可能是由 EJS 生成的 HTML 或纯 JSON),然后使用客户端 JS 将其插入到页面中。

    如果您不想使用 Ajax,则必须使用表单提交并加载新页面。


    虽然可以从 EJS 调用 Axios(我感觉它的异步特性会破坏事情),这与表单提交选项实际上相同,但它包含业务逻辑在视图层中,这充其量是令人困惑的。


    相关:What is the difference between client-side and server-side programming?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 2015-07-26
      • 2017-04-16
      • 2011-05-21
      相关资源
      最近更新 更多