【问题标题】:Does the server-side script need to be defined in "routes"?服务器端脚本是否需要在“路由”中定义?
【发布时间】:2016-02-04 15:42:08
【问题描述】:

我正在开发一个 NodeJS Express 应用程序,据我所知,服务器-客户端通信通过将 AJAX 脚本放入 Javascript 文件(即客户端)并放置一个侦听器函数(基本上是 function(req, res){} ) 变成另一个。 (那是服务器端)

如果有错请告诉我。否则,我对此有疑问:在客户端有一个 Jade 文件,上面附有 script include 的上述 AJAX 脚本。为了让这个网站在一个非常基本的层面上工作,我在 /routes 文件夹中制作了下一个脚本(并且必须在 app.js 中定义一些变量)

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
    res.render('name-of-the-Jade-file', { title: 'Site title' });
});

module.exports = router;

我是否也必须为侦听器函数在同一个文件夹中制作类似的脚本?

【问题讨论】:

    标签: javascript ajax node.js express


    【解决方案1】:

    在 WWW 的上下文中,服务器-客户端通信通过发出 HTTP 请求和接收 HTTP 响应来工作。 (至少除非你想开始使用 Web Sockets 之类的东西)。

    Ajax 是“发出 HTTP 请求并使用客户端 JavaScript 处理其响应”的名称。您还可以使用纯 HTML 链接或表单提交从网页与服务器通信。

    路由只是一种常见的设计模式,在服务器上用于检查客户端请求的 URL 并运行适当的代码来响应它。 Express 使用它们。


    如果您想使用 Ajax,那么您需要在客户端上使用一些代码来使用 XMLHttpRequest(或 JSONP 或 iframe hack)向服务器发出 HTTP 请求。

    然后你需要编写一些代码来响应它。 render 是 Express 用来获取一些数据、对其进行格式化,然后将其作为响应发送回客户端的方法。 Express 提供的其他方法可能具有相同的目的,但您通常需要使用 render

    【讨论】:

    • 因此,如果我想进行计算或其他变量修改并将其发送回客户端,那么我必须将所有代码放入 routes 中的文件中,或者我可以甚至在外面也使用render
    • @ZoltánSchmidt — 正如我所说,在 Express(您正在使用的)中,路由是您确定调用哪个函数的方式。如果你不让它成为一个路由,那么这个函数将如何被调用?
    • 问题:我意识到render 总是需要一个可以呈现的输入,但也可以定义本地变量。这是否意味着使用 AJAX,我可以修改在调用 render 时声明的变量?
    • 您不能在调用函数的过程中声明变量,所以我不确定您的意思。 render,AFAIK,需要知道你想在 HTTP 响应中放入什么。处理该响应的客户端 JS 可以对数据执行任何操作。
    • 我的意思是,例如在res.render('index', { name: "Quentin"} )的情况下,AJAX只能修改name,不能修改其他变量。对吗?
    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 2017-12-09
    • 2022-07-15
    • 1970-01-01
    • 2019-05-21
    • 2017-06-21
    • 2019-09-10
    • 2021-01-07
    相关资源
    最近更新 更多