我需要在nodejs的express.js框架中进行url映射方面的帮助。
router.get('/first/:second_param', function(res,req){
//processing second_param and rendering a template,
res.render('first.html');
});
router.get('/first/:second_param/get_items', function(res,req){
//again evaluating second_param and and responding accordingly
res.send(jsonData);
});
Express 4.0中是否可以使用这种路由?
first.html 在网址上发出ajax请求./ get_items'
答案 0 :(得分:0)
是的,可以使用Express 4.0进行。
以下是一个例子:
您需要安装ejs并表达:npm install ejs express
app.js
档案:
var express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res) {
res.redirect('/home/2');
});
app.get('/home/:itemId', function(req, res) {
var itemId = req.params.itemId;
console.log(itemId);
res.render('index');
});
app.get('/api/items/:itemId', function(req, res) {
var itemId = req.params.itemId;
console.log('item id: %s', itemId);
res.json([{name: 'item1'}]);
});
app.listen(8080, function() {
console.log('server up and running at 8080');
});
views/index.ejs
档案:
<!doctype html>
<html>
<head>
</head>
<body>
<h1>Hello World!</h1>
<script>
function responseGET() {
if(this.readyState !== 4 || this.status !== 200) return;
alert(this.responseText);
}
function getItems(URL) {
var request = new XMLHttpRequest();
request.open('GET', URL, true);
request.onreadystatechange = responseGET.bind(request);
request.send(null);
}
function domReady() {
getItems('http://localhost:8080/api/items/1');
}
document.addEventListener('DOMContentLoaded', domReady);
</script>
</body>
</html>
基本上我有一个服务器,当有人在/home/:itemId
请求时我正在为index.html提供服务,而且我正在为服务项目/api/items/:itemId
公开另一条路由。
一旦DOM准备好,我从客户端请求/api/items/:itemId
一些项目然后显示在索引html中。