如何将Node.js传递给HTML?

3

我正在使用Node.js来调用IBM Cloud的一个API。我有这段代码,可以看到响应结果,但是我需要将这个"res.send"传递到HTML页面中。那么,我该怎么做呢?

以下是我的Node.js代码。谢谢!

var express = require('express');
var path = require('path');
var app = express();


app.listen(2000, function () {
  console.log(' Watson!');
});

//---------------

app.get('/', (req, res) => {

//-------------Watson
var ToneAnalyzerV3 = require('watson-developer-cloud/tone-analyzer/v3');

var tone_analyzer = new ToneAnalyzerV3({
  username: '',
  password: '',
  version_date: '2017-09-21',
  accept_language: 'es',
  tone_name: 'es'
});

var params = {
  'tone_input': require('./tone.json'),
  'content_type': 'application/json',
  'content_language' : 'en',
  'accept_language' : 'es'
};

tone_analyzer.tone(params, function(err, response) {
  if (err){
    console.log('error:', err);
    res.send(err);
  }
  else{

    res.render('index.html');
    res.send({"Hi! I'm Waton and I can see:":response.document_tone.tones[0].tone_name});
    console.log(JSON.stringify(response, null, 2));
}
  });

});

res.send会向客户端应用程序发送JSON响应,您的客户端应用程序将显示它。 - SILENT
不清楚你想要达到什么目的。如果你想在发送index.html之前插入数据,那么通常会使用一个模板引擎,将HTML模板和数据传递给模板引擎,然后模板引擎会根据你的模板设计插入数据。你不能同时调用res.render()res.send()。只有第一个被调用的方法才会发送任何内容。 - jfriend00
2个回答

0

我认为您想要使用这种格式来渲染视图并将本地变量传递给视图

res.render(view [, locals] [, callback])

这里有一个很好的例子


0

你的代码必须向客户端(Web浏览器)返回HTTP响应。因此,你有一些选项与Express响应对象(在你的情况下是res)相关的不同函数。有关更多信息,请参见这里

你可以像之前一样使用res.send([body]):这将在HTTP响应正文中写入你创建的字符串,并附加由Tone Analyzer返回的值。但是,这只会返回一个带有该字符串的空白页面,对于具有特定外观和感觉的更复杂的Web应用程序可能并不是你想要的。在这种情况下,你可以使用模板引擎,它将把你选择的变量的值附加到页面(视图)的静态HTML代码中。有关更多信息,请参见使用Express的模板引擎

请注意,无论你选择哪种解决方案,显然你只能将HTTP响应发送回客户端一次,因此你必须仅选择上述提到的其中一种选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接