【问题标题】:console.log() in client from express server来自 Express 服务器的客户端中的 console.log()
【发布时间】:2020-04-11 17:51:28
【问题描述】:

是否可以在后端使用console.log()(我使用的是express)在前端输出东西。 例如:

const express = require('express');
const app = express();
client.console.log('Hi');

我该怎么做?
谢谢。

【问题讨论】:

  • node.js 中没有内置支持将内容发送到前端控制台。您必须自己构建它,并且需要一些协作的前端和后端代码来实现。就目前而言,这个问题过于笼统,因为它与您想在什么情况下或为什么这样做没有任何背景信息?根据具体情况,有许多可能的实现方式。

标签: javascript html express backend web-frontend


【解决方案1】:

没有内置支持服务器可以在客户端控制台中显示某些内容。我不确定实际用例是什么,因为控制台通常是调试辅助工具,而不是实际的最终用户。

无论如何,如果您想这样做,您必须在客户端和服务器上都有协作代码,然后该代码的工作方式取决于您要将信息放入控制台的上下文。

从页面加载

从页面加载开始,服务器可以在页面中嵌入一个小脚本,当页面加载和运行时,该脚本将输出到浏览器控制台。

来自 Ajax 调用

在这里,您可以在一些返回的 JSON 中包含一个包含所需控制台消息的属性,然后进行 ajax 调用的客户端代码必须获取该属性并使用它调用 console.log()

从服务器上的任意时间开始

如果您不在来自浏览器或网页 Javascript 的现有请求的上下文中(如前两点),那么您需要在网页和服务器之间连接一些推送通道,例如 webSocket连接、socket.io 连接或 SSE 连接。然后,您可以向客户端发送一条消息,客户端需要一些代码来监听这些传入的消息,然后在收到它们时将它们显示在本地控制台中。

【讨论】:

    【解决方案2】:

    试试看:

    Express 的 'res' 对象的 'send' 方法,是在请求事件中向客户端发送响应的众多方法之一。

    const express = require('express')
    const app = express()
    
    app.get('/test', (req, res) => {
      return res.send('Hello world!')
    })

    【讨论】:

    • 这不是被问到的。
    • 真的,问的问题没有确切的解决方案,但我想针对他遇到的问题提出另一种解决方案
    【解决方案3】:

    没有 jfriend00 所说的支持,但是有办法解决这个问题。 所以假设用户请求 /test 你要显示in his consoleHello World 所以你这样做:

    const express = require('express')
    const app = express()
    
    app.get('/test', (req, res) => {
      return res.send('<script>console.log(Hello world!)</script>')
    })
    

    这充当完整的客户端控制台日志。你去吧。 (单次)

    如果您想不断发布控制台消息(多次),或者按照 jfriend 在他的帖子中所说的设置 socket.io。

    【讨论】:

    • 应该是'&lt;script&gt;console.log("Hello world!")&lt;/script&gt;'
    猜你喜欢
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2018-08-12
    • 2017-06-18
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多