【问题标题】:How to post a form from HTML into Node.js file如何将表单从 HTML 发布到 Node.js 文件中
【发布时间】:2012-01-10 22:06:31
【问题描述】:

我有一个名为 index.html 的 HTML 文件,以及一个名为 server.js 和 logic.js 的 Node.js 文件。

server.js 负责创建服务器和加载 index.html 文件。 HTML 文件显示一个表单,要求执行任何操作(例如:用户名),然后将此数据发布到打印此用户名的 logic.js 文件。

怎么办? 谢谢!

【问题讨论】:

    标签: node.js


    【解决方案1】:

    好吧,如果没有看到您的任何代码或不知道您正在使用什么框架,很难具体说明,但您会想要

    • 在 HTTP GET 上呈现一些包含表单的 HTML
      • 这是最简单的部分。只需编写一个带有 a 和一些标签的简单文档。我假设您已经有一些网络服务器可以执行此操作。
    • 监听 POST 请求。
      • 这与 GET 不同,您的服务器可能有不同的函数来处理该请求(因为逻辑不同)。
    • 处理 POST 请求
      • 在这里,您只需从 POST 数据中提取名称并打印(或做任何您想做的事情)。

    我建议为此使用expressjs,因为您可能不想编写所有处理 Web 服务器的代码。有了这个框架,渲染 HTML 就像

    app.get("/", function(request, response) { res.send(some_html); });
    

    处理 POST 就像

    app.post("/endpoint", function(request, response) { console.log(request.query.name); });
    

    编辑:要回答您的问题,将处理多个页面的逻辑分布在单独的文件中并不难。我通常做的是有一个 server.js 来设置所有内容,然后将包含处理其他页面逻辑的其他文件。

    例如,如果您的应用的布局可能像

    server.js
    /modules/
    /modules/index.js
    /modules/user.js
    /modules/posts.js
    public/index.html
    public/user.html
    public/posts/html
    

    server.js 将包含模块目录中的所有文件,其中一个可能看起来像

    index.js

    app.get("/", function(req, res) {
      render("index.html");
    });
    

    user.js

    app.get("/user", function(req, res) {
    render("user.html");
    });
    

    post.js

    app.get("/post", function(req, res) {
    render("post.html");
    });
    

    【讨论】:

    • 其实我不使用 expressjs 但我想我会的。我能知道这些代码行是写在一个文件中还是可以分布在多个文件中。
    • 刚刚编辑了我的答案以回应您的评论。我希望我明白你的意思。一般来说,我会尝试为我的应用程序获取逻辑,并获取特定于处理应用程序部分的部分,并将其与其他所有内容放在一个单独的文件中。 Node 并不总是使用 commonjs 模块系统使这变得容易,但是一旦你看到一些好的设计模式,它就会变得容易得多。我建议在 github 上查看一些优秀的节点项目,看看它们如何处理项目中的依赖关系。
    • 非常感谢。我希望我能不止一次为你的答案投票。 :)
    猜你喜欢
    • 1970-01-01
    • 2014-07-20
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多