How do I properly set routes up for a Single Page App using Express.js?(如何使用Express.js为单页应用程序正确设置路线?)
问题描述
我正在尝试使用Express.js构建一个单页面应用程序。在我的index.html页面上,我有一个基本的表单,在提交时,它将向API发出请求,检索数据,解析它,然后我希望将解析的数据呈现为链接列表。现在,我可以呈现索引页,并且可以从添加到页面的表单对API进行提交调用。我困惑的是如何正确地重定向从API调用获得的数据,然后将其呈现在同一页面上。我以前用Express构建过简单的应用程序,有多个视图,但从来没有一个单一的页面应用程序。对于这些应用程序,我知道对于响应,你可以调用类似res.render(‘要呈现的视图的名称’,data)之类的东西,但在这种情况下不起作用。我试着通过这个网站和Express文档找到一些解决方案,但我没有看到任何不包括使用另一个像Angel这样的框架的解决方案。对于这个应用程序的目的,我不需要包括任何额外的框架,我有点迷茫。
我调用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响应的路线
- 将您的"框架"文件发送到该路由上的响应
示例代码:
const handler = (req, res) => res.send(path.join(__dirname, "path/to/your/index.html"))
const routes = ["/", "/hello", "/world"]
routes.forEach( route => app.get(route, handler) )
这应该是您的入门指南
这篇关于如何使用Express.js为单页应用程序正确设置路线?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何使用Express.js为单页应用程序正确设置路线?


- Fetch API 如何获取响应体? 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01