如何使用Express.js正确设置单页应用程序的路线?

我正在尝试使用Express.js构build单页面应用程序。 在我的index.html页面上,我有一个基本的表单,它在提交后会向API发出请求,检索数据,parsing数据,然后将分析的数据呈现为链接列表。 现在我能够呈现索引页面,并且可以从我添加到页面的表单中对API进行提交调用。 我感到困惑的是如何正确地redirect我从API调用获得的数据,然后将其呈现在同一页面上。 我之前已经使用Express构build了简单的应用程序,在那里有多个视图,但从来没有一个页面的应用程序 对于这些应用程序,我知道对于响应,你可以调用像res.render('视图渲染的名称',数据),但在这种情况下不起作用。 我试图通过这个网站和通过快速文档find一些解决scheme,但我还没有看到任何东西,也没有包括使用像Angular的另一个框架。 对于这个应用程序的目的,我不需要包含任何额外的框架,我有点失落。

我现在调用API的函数看起来像这样。 当它被调用时,我被引导到一个只显示了json的页面

app.use(express.static(path.join(__dirname, '/public'))); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.use('/', express.static(path.join(__dirname, 'public'))); app.get('/search', function(req, res) { var title = req.query.movieTitle; var url = 'http://www.omdbapi.com/?s=' + title; request(url, function (err, response, body) { var results = JSON.parse(body); var movieTitles = results.Search; console.log(movieTitles); res.send(movieTitles); }); }); 

你必须做的基本的事情是:

  • 定义您的后端应用程序必须用Spa回应的路线
  • 将您的“骨架”文件发送到该路由上的响应

示例代码:

 let handler = (req, res) => res.send(path.join(__dirname, "path/to/your/index.html")) let routes = ["/", "/hello", "/world"] routes.forEach( route => app.get(route, handler) ) 

这应该让你开始