如何使用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) )
这应该让你开始
- 多个SPA与node.js和AngularJS
- 使用Node Express和Passport捕获锚链接/路由
- 如何用Express后台构build多个布局的Angular JS
- 我的第一个Node.js服务器:无法加载资源:net :: ERR_INCOMPLETE_CHUNKED_ENCODING
- 用于生成PDF的React JS / Node JS / Java RESTful API
- Angular2 POST Observable Request返回一个不可读的JSON对象
- 为Node.js服务器+ SPA javascript框架设置自动化BDDtesting环境的简单方法?
- 在服务器和客户端上渲染Backbone.js应用程序
- 预期的响应包含一个数组,但有一个对象