Ajax 复杂节点url映射

Ajax 复杂节点url映射,ajax,node.js,express,Ajax,Node.js,Express,我需要帮助在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){ //agai

我需要帮助在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在url。/get_items'上发出ajax请求。是的,可以使用Express 4.0执行此操作

以下是一个例子:

您需要安装ejs和express:
npm安装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');
});
<!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>

视图/index.ejs
文件:

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');
});
<!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>

你好,世界!
函数responseGET(){
如果(this.readyState!==4 | | this.status!==200)返回;
警报(this.responseText);
}
函数getItems(URL){
var request=new XMLHttpRequest();
打开('GET',URL,true);
request.onreadystatechange=responseGET.bind(请求);
请求发送(空);
}
函数domrready(){
getItems('http://localhost:8080/api/items/1');
}
document.addEventListener('DOMContentLoaded',domReady);
基本上,我有一个服务器,当有人在
/home/:itemId
请求时,该服务器提供index.html,并且我还公开了另一个用于提供项目的路由
/api/items/:itemId

DOM就绪后,我将从客户端请求
/api/items/:itemId
一些项目,然后这些项目将显示在索引html中