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

如何为Express渲染的HTML添加功能 实现表单提交数据写入服务端本地文件

问题核心原因
  • Node.js 服务端代码和浏览器端前端代码是完全隔离的运行环境:require 是 Node.js 专属的模块化语法,浏览器原生不支持,放在 public 静态目录的 JS 是返回给浏览器运行的,写 require 必然报错。
  • views 目录默认是服务端渲染模板的存储目录,没有配置静态资源映射,所以前端无法直接访问该目录下的任意文件。表单提交的逻辑要拆分到前端(触发提交请求)和后端(接收数据写本地文件)两部分实现,不能把服务端逻辑写在前端JS里。

实现步骤

1. 补全服务端 server.js 配置

需要新增表单数据解析中间件、处理表单提交的POST路由,以及服务端文件写入逻辑:

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

// 配置解析表单POST数据的中间件
app.use(express.urlencoded({ extended: true }))
// 静态资源映射,只有public目录下的资源可被前端直接访问
app.use(express.static(path.join(__dirname, 'public')));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

app.get("/", (req, res) => {
    console.log("here")
    res.render("index")
})

// 新增处理表单提交的POST接口
app.post('/submit-form', (req, res) => {
  // 获取表单提交的所有字段数据
  const formData = req.body
  // 将数据转为字符串写入本地文件,示例写入当前目录的data.txt,追加写入避免覆盖历史数据
  const dataStr = JSON.stringify(formData) + '\n'
  fs.appendFile(path.join(__dirname, 'data.txt'), dataStr, (err) => {
    if (err) {
      return res.send('提交失败:' + err.message)
    }
    res.send('提交成功,数据已写入服务端文件')
  })
})

app.listen(3000, () => {
  console.log('服务运行在 http://localhost:3000')
})

2. 编写前端表单及提交逻辑

在 views 目录下的 index.html 模板中,直接给表单配置提交地址为上面新增的POST接口即可,示例代码:

<form action="/submit-form" method="POST">
  <!-- 替换为你自己的表单字段,name属性为服务端获取数据的key -->
  <div>
    <label>用户名:</label>
    <input type="text" name="username" required>
  </div>
  <div>
    <label>留言内容:</label>
    <textarea name="content" required></textarea>
  </div>
  <button type="submit">提交</button>
</form>

如果需要无刷新提交,可以在 public 目录下新建前端JS文件(比如public/js/form.js),用fetch/axios发送POST请求即可,注意该JS属于前端运行代码,不要写任何Node.js服务端语法,所有和服务端的交互都通过HTTP请求实现。

3. 运行验证

启动服务后访问http://localhost:3000,填写表单提交后,即可在服务端根目录看到生成的data.txt文件,里面存储了所有提交的表单数据。


注意事项
  • 所有需要给浏览器访问的静态资源(前端JS、CSS、图片等)都必须放在public目录下,不要放到views目录
  • 服务端逻辑(文件读写、数据库操作、敏感配置等)全部写在服务端路由/脚本中,绝对不要写到前端JS中,避免泄露服务端敏感信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:45:05