You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将EJS的articles.image值传入img标签的src属性?

解决EJS中img标签src绑定articles.image的问题

你的核心问题是数据存储和视图渲染逻辑错位:服务器端把完整的img标签存在了articles.image字段里,而非单独的图片URL,同时EJS写法也不符合正确的渲染逻辑。

步骤1:修正Server.js中的数据结构

把articles数组里的image字段改成纯图片URL,不要包含任何HTML标签:

const express = require('express')
const app = express()

const router = require('./routes/article')

app.use('/articles', router) // 注意补全前缀斜杠,否则路由匹配会出错

app.set('view engine', 'ejs')

app.get('/', (req, res) => {
    const articles = [{
        title: 'Test Article',
        createdAt: Date.now(),
        quickDescription: 'quick description',
        // 仅保留纯图片URL
        image: 'https://media.discordapp.net/attachments/1148215519724441600/1148217149928767528/New_Project_1.png'
    }]
    res.render('index', { articles: articles })
})

app.listen(5000)

步骤2:修正EJS中的渲染代码

如果是渲染单篇文章(比如数组第一个元素):

<img class="card-img-top" alt="文章图片" src="<%= articles[0].image %>">

如果是循环渲染所有文章(更通用的场景):

<% articles.forEach(article => { %>
  <div class="card">
    <img class="card-img-top" alt="<%= article.title %>" src="<%= article.image %>">
    <div class="card-body">
      <h5 class="card-title"><%= article.title %></h5>
      <p class="card-text"><%= article.quickDescription %></p>
    </div>
  </div>
<% }) %>

为什么之前的写法无效?

你之前的EJS代码会生成两个独立的img标签:一个是空的<img class="card-img-top" alt="...">,紧接着又输出服务器端存储的完整img标签,最终HTML结构混乱,自然无法正确展示图片。

内容的提问来源于stack exchange,提问作者voxador25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:22:32