一般来说,我们在制作网站时会给出2-3种类型的回复.
的位置更改同一页面的内容
后面的数据库
对于何时使用fetch api呈现来自后端rest的内容,以及在使用res.render()时使用模板系统使用expess,我感到困惑。这两种选择是相互替代的,还是我完全不明白的东西?
提前谢谢你。
发布于 2021-05-13 23:32:54
给定的http请求需要有特定的用途。对于任何特定的http请求,您可能需要做许多不同的事情。服务器应该发送什么样的响应完全取决于该http请求的目的。
以下是一些说明不同目的的例子:
https://stackoverflow.com/questions/67527190/fetch-api-and-node-js。返回浏览器可以呈现的HTML页面(并在其中运行任何Javascript )。在Express中,您可以使用res.render()、res.sendFile()或res.send()甚至res.write()将HTML数据发送回浏览器。您使用的是什么,取决于数据的来源和最适合的。res.render()通常会与模板系统一起使用(比如EJS、nunjucks、Jade、Mustache等等)。res.sendFile()发送一个已经构建的静态文件。res.send()从Javascript (可能是动态创建的)发送一个字符串。res.send(someObj)或res.json(someObj)。如果someObj是Javascript对象,那么两者都会做相同的事情。<form>中的submit按钮,浏览器从表单中的字段中收集值并将其发送到<form>标记的action属性的链接(通常作为POST方法)时,就会这样做。然后,服务器将接收该数据,按预期进行处理并发送响应。浏览器将将响应呈现为新的网页。有时,服务器希望发生的是表单发布,然后浏览器切换到新的URL。为此,服务器使用3xx状态代码(通常为302)进行响应,并在对新URL的响应中设置Location头。在这种情况下,浏览器看到302个响应状态,抓取Location头,然后从服务器请求新的URL。服务器获取新的URL请求,将内容返回浏览器(在本例中通常是HTML页面),然后浏览器呈现该新页面。如果您的服务器希望告诉客户端转到一个新的http,那么它可以使用类似于res.redirect(302, newURL)的东西。这只是一个快捷方式,它自动将响应的http状态设置为302,并在对您传递的URL的响应中设置Location头。。
因此,这些只是真实的例子,说明如何使用不同的http请求和响应。什么时候这样做完全取决于任何给定http请求的目的和环境,这完全取决于您的应用程序设计。
请解释使用Node、Express、Fetch发送这些类型响应的方法是什么。
你这么说是什么意思还不清楚。fetch() API是一个浏览器API,可用于从网页Javascript向任何目标服务器发送http请求,然后接收对该Javascript的响应。
Express是一种构建web服务器并定义您希望它接收和处理的URL/http方法的方法。
节点是Express运行的开发环境。
https://stackoverflow.com/questions/67527190
复制相似问题