zoukankan      html  css  js  c++  java
  • koa 基础(二十五)数据库 与 art-template 模板 联动 --- 新增数据

    1.视图层

    根目录/views/index.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <style>
        .table {
          border: 1px solid #eee;
          text-align: center;
        }
        
        .table td,
        .table th {
          border: 1px solid #eee;
          text-align: center;
        }
      </style>
    </head>
    
    <body>
      <br />
      <br />
      <a href="/add">增加用户</a>
      <br />
      <br />
      <table class="table">
        <tr>
          <th>姓名</th>
          <th>年龄</th>
          <th>性别</th>
          <th>操作</th>
        </tr>
        {{each list}}
        <tr>
          <td>{{$value.username}}</td>
          <td>{{$value.age}}</td>
          <td>{{$value.sex}}</td>
          <td>
            <a href="#">删除</a> <a href="#">编辑</a>
          </td>
        </tr>
        {{/each}}
      </table>
    </body>
    
    </html>

    根目录/views/add.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
    </head>
    
    <body>
      <h2>学员增加</h2>
      <form action="/doAdd" method="post">
        <br />用户名:
        <input type="text" name="username" />
        <br />
        <br /> 年龄:
        <input type="text" name="age" />
        <br />
        <br /> 性别:
        <input type="text" name="sex" />
        <br />
        <br />
        <input type="submit" value="提交" />
      </form>
    </body>
    
    </html>

    2.控制层

    app.js

    // 引入模块
    const Koa = require('koa');
    const router = require('koa-router')(); /*引入是实例化路由 推荐*/
    const render = require('koa-art-template');
    const path = require('path');
    const BodyParser = require('koa-bodyparser');
    const DB = require('./module/db.js');
    
    // 实例化
    let app = new Koa();
    
    // 配置post提交数据的中间件
    app.use(BodyParser());
    
    // 配置 koa-art-template 模板引擎
    render(app, {
      root: path.join(__dirname, 'views'), // 视图的位置
      extname: '.html', // 后缀名
      debug: process.env.NODE_ENV !== 'production' // 是否开启调试模式
    })
    
    // 显示学员信息
    router.get('/', async (ctx) => {
      let result = await DB.find('user', {});
    
      await ctx.render('index', {
        list: result
      });
    })
    
    // 增加学员
    router.get('/add', async (ctx) => {
      await ctx.render('add');
    })
    
    // 执行增加学员的操作
    router.post('/doAdd', async (ctx) => {
      // 获取表单提交的数据
      // console.log(ctx.request.body); // { name: 'aaa', age: 'aa', sex: 'a' }
      let data = await DB.insert('user', ctx.request.body);
      // console.log(data);
    
      try {
        if (data.result.ok) {
          ctx.redirect('/');
        }
      } catch (err) {
        console.log(err);
        ctx.redirect('/add');
      }
    })
    
    // 编辑学员
    router.get('/edit', async (ctx) => {
      let data = await DB.update('user', {
        'username': '赵六'
      }, {
          'username': '赵六666'
        });
    
      console.log(data.result);
    
      ctx.body = '更新数据';
    })
    
    // 删除学员
    router.get('/delete', async (ctx) => {
      let data = await DB.remove('user', {
        'username': '张珊珊'
      });
    
      console.log(data.result);
    
      ctx.body = '删除数据';
    })
    
    app.use(router.routes());
    app.use(router.allowedMethods());
    
    app.listen(3000);

    3.效果图

  • 相关阅读:
    [mysql练习]多行结果合并问题练习
    【Python】Python多进程练习
    【mysql练习】转置,总计,分组
    【Mysql】HDFS文件上传流程
    [Jmeter][基础]Jmeter连接IMPALA
    【Linux】 -bash-4.2#问题和Cannot allocate memory
    微服务学习之路
    好的东西一定要收藏-持续更新
    Python日期的加减等操作
    NGINX动态增加模块,平滑升级
  • 原文地址:https://www.cnblogs.com/crazycode2/p/10970925.html
Copyright © 2011-2022 走看看