Node.js系列教程 - Express


安装

npm install express

创建Express APP

app.js:

const express = require('express');

const app = express();

app.listen(3000);

app.get('/', (req, res) => {
  res.send('<h2>Home</h2>');
})


app.get('/help', (req, res) => {
  res.sendFile('./views/help.html', { root: __dirname });
})

运行:

nodemon app

重定向

app.get('/helppage', (req, res) => {
  res.redirect('/help');
});

404页面

// 下面代码放在app.js的最后
app.use((req, res) => {
  res.status(404).sendFile('./views/404.html', { root: __dirname });
});

路由参数

app.get('/students/:id', (req, res) => {
  console.log(req.params.id);
  Student.findById(req.params.id)
    .then(result => {
      res.render('details', { student: result})
    })
    .catch(err => {
      console.log(err);
    })
});

不同的HTTP请求类型

POST

需要使用一个中间件来解析request对象

app.use(express.urlencoded({ extended: true}));

// ...

// 监测/students路径的POST请求
app.post('/students', (req, res) => {
  // 注意,在此之前需要创建相应的Schema/Model
  const student = new Student(req.body);
  student.save()
    .then(result => {
      res.redirect('/studentlist');
    })
    .catch(err => {
      console.log(err);
    })
})

DELETE

前端:

<a class="remove" data-id="<%= student.id%>">Delete</a>

<script>
  const deleteLink = document.querySelector('a.remove');

  deleteLink.addEventListener('click', (e) => {
    const studentId = deleteLink.dataset.id;
    fetach(`/students/${studentId}`, {
      method: 'DELETE'
    })
    .then(response => response.json())
    .then(data => window.location.href = data.redirectUrl))
    .catch(err => {
      console.log(err);
    })
  })
</script>

Express代码:

app.delete('/students/:id', (req, res) => {
  Student.delete(req.params.id)
    .then(result => {
      // 由于这里相应Ajax请求,因此发送回json,而不是重定向
      res.json( { redirectUrl: '/studentlist' } );
    })
    .catch(err => {
      console.log(err);
    })
});

文章作者: 逻思
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 逻思 !
  目录