第二十三天

1-使用 koa 搭建服务器
  const koa = require('koa')
  const app = new koa()
  //路由请求
  //context   ctx   上下文   包含req和res
  app.use(async(ctx) => {
      ctx.body = 'hello koa2'
  })
  app.listen(3000)
 
2-如何配置 koa 路由
  const koa = require('koa');
  //创建路由对象
  const router = require('koa-router')()
  const app = new koa()
  //路由请求
  router.get('/index', (ctx) => {
      ctx.body = 'hello index'
  })
  router.get('/list', (ctx) => {
      ctx.body = 'hello list'
  })
  //启用路由
  app.use(router.routes())
      .use(router.allowedMethods())
  app.listen(3000)
 
3-静态资源如何获取
  //加载
  const static = require('koa-static')
  const path = require('path')
  //获取静态资源
  app.use(static(path.join(__dirname, 'public')))
 
4-koa 如何使用模板引擎
  const render = require('koa-art-template')
  render(app, {
      root: path.join(__dirname, 'views'),
      extname: '.html'
  })
  //使用
  router.get('/add', async(ctx) => {
      let litter = 'hello koa'
      let lis = '张三'
      await ctx.render('index', {
          litter,
          lis
      })
  })
 
5-使用 koa 实现一个用户增删改查的案例
  在app.js页面导入框架,创建服务器,创建网站服务,处理参数,配置路径,监听端口
 
  const koa = require('koa')
  const render = require('koa-art-template')
  const path = require('path')
  const bodyParser = require('koa-bodyparser')

  // 2-创建网站服务
  const app = new koa()
  const router = require('./router/index')
  render(app, {
      root: path.join(__dirname, 'views'),
      extname: '.art'
  })

  //处理post参数
  app.use(bodyParser())
  //加载路由
  //为index路由对象匹配路径
  app.use(router.routes())
      .use(router.allowedMethods())

  // 4-监听端口
  app.listen(3000);
  console.log('服务器运行在3000...');
 
  --------------------------------------
  在index.js页面写功能
  
  const koa = require('koa');
  //创建路由对象
  const router = require('koa-router')()
  require('../model/index')
      //引入User,user为创建好的数据库用户聚合
  const User = require('../model/user');

  //创建路由
  router.get('/add', async(ctx) => {
      await ctx.render('add', {})
  })
  加载数据
  router.get('/list', async(ctx) => {
      // res.end('list')
      //获取所有的学生信息
      let users = await User.find();
      await ctx.render('list', {
          users: users
      });
  })
 
  查
  router.get('/modify/:id', async(ctx) => {
      console.log(ctx.params)
      let query = ctx.params.id.substring(1, ctx.params.id.length - 1)      
      let user = await User.findOne({ _id: query })
      let hobbies = ['足球', '篮球', '橄榄球', '敲代码', '抽烟', '喝酒', '烫头']
      await ctx.render('modify', {
          user,
          hobbies
      })
  })
 
  改
  router.post('/modify/:id', async(ctx) => {
      let user = ctx.request.body
      let id = ctx.params.id.substring(1, ctx.params.id.length - 1);
      // 更新
      await User.updateOne({ _id: id }, user)
          // 重定向
      ctx.response.redirect('/list');
  })

  删
  router.get('/delete/:id', async(ctx) => {
      let query = ctx.params.id.substring(1, ctx.params.id.length - 1)
      console.log(query)
      await User.findOneAndDelete({ _id: query })
      ctx.response.redirect('/list');
  })

  增
  router.post('/add', async(ctx) => {
      let user = ctx.request.body

      await User.create(user);
      //重定向

      ctx.response.redirect('/list');

  })

  //导出路由
  module.exports = router
posted @ 2021-03-07 16:15  1825632889  阅读(39)  评论(0)    收藏  举报