23

1- 使用 koa 搭建服务器:

// 安装koa
const koa = require('koa');

// 创建服务器
const app = new koa();

// context => ctx  上下文,包含req,和res
app.use(async (ctx) => {
    ctx.body = 'hello koa2'
})

app.listen(3000)
console.log('运行在3000端口')

2- 如何配置 koa 路由:

const koa = require('koa')

// 创建路由对象
const router = require('koa-router')();

// 创建服务
const app = new koa()

// 路由请求
router.get('/index', (ctx) => {
    ctx.body = 'hello index.js'
})
router.get('/list', (ctx) => {
    ctx.body = 'hello index'
})
// 启用
app.use(router.routes())
    .use(router.allowedMethods())

// 监听请求
app.listen(3000)
console.log('运行在3000端口')

3- 静态资源如何获取:

var koa=require('koa')
  var app=new koa()
  var Router=require('koa-router')
  var router=Router()
  var path=require('path')
  var static=require('koa-static')
  app.use(static(path.join(__dirname,'public')))
  router.use('/',(ctx)=>{
    ctx.body='koa'
  })
  app.use(router.routes())
  .use(router.allowedMethods())
  app.listen(3000,()=>{
    console.log('服务器已启动,端口正在监听...')
  })

4- koa 如何使用模板引擎:

// 模板引擎
const koa = require('koa')
const router = require('koa-router')();
// 引入模板引擎
const ejs = require('ejs')
const views = require('koa-views')
const render = require('koa-art-template')
const path = require('path')

const app = new koa();
render(app, {
    root: path.join(__dirname, 'views'),
    extname: '.html',
    debug: process.env.NODE_ENV !== 'production'
})
// 路由请求
router.get('/add', async (ctx) => {
    // let html = ejs.render('', users);
    let lis = '张三'
    await ctx.render('index', {
        lis
    })
})

// 启用
app.use(router.routes())
    .use(router.allowedMethods())

// 监听请求
app.listen(3000)
console.log('3000......')

5- 使用 koa 实现一个用户增删改查的案例:

app.js为入口文件,功能是导入文件,配置路由,引入koa组件,最后启动服务。

// 安装koa
const koa = require('koa');
require('./model/index.js');
const path = require('path');
const queryString = require('querystring');

// const bodyParser = require('koa-bodyparser');
const bodyParser = require('koa-bodyparser')

// 加载模板引擎
const render = require('koa-art-template')
// 加载

// 加载数据库
const User = require('./model/user.js');
// 加载路由模块,创建路由对象
const router = require('koa-router')();

// 创建服务器
const app = new koa();

// 处理post参数
app.use(bodyParser());

render(app, {
    root: path.join(__dirname, 'views'),
    extname: '.art',
    debug: process.env.NODE_ENV !== 'production'
})

// 添加路由请求
router.get('/add', async (ctx) => {
    await ctx.render('add', {})
});
router.get('/list', async (ctx) => {
    let user = await User.find();
    await ctx.render('list', {
        user
    })
});

// 添加用户
router.post('/add', async (ctx) => {
    /*   ctx.body = ctx.request.body;
      console.log(ctx.body) */

    await User.create(ctx.request.body);
    // 重定向页面
    ctx.redirect('/list');
});
// 删除用户
router.get('/remove/:id', async (ctx) => {
    // console.log(ctx.params)
    // ctx.body = ctx.params
    let id = ctx.params.id.substring(1, ctx.params.id.length - 1);
    // ctx.body = id;
    // console.log(id);
    await User.findOneAndDelete({
        _id: id
    });
    // 重定向页面
    ctx.redirect('/list');
});

// 修改用户
router.get('/modify/:id', async (ctx) => {
    let query = ctx.params.id.substring(1, ctx.params.id.length - 1);
    console.log(query)
    let user = await User.findOne({
        _id: query
    })
    // console.log(user)
    let hobbies = ["足球", "篮球", "橄榄球", "敲代码", "抽烟", "喝酒", "烫头"]
    ctx.render('modify', {
        user,
        hobbies
    })
})
// 修改
router.post('/modify/:id', async (ctx) => {
    let id = ctx.params.id.substring(1, ctx.params.id.length - 1);
    let userUpdate = ctx.request.body;
    await User.updateOne({
        _id: id
    }, userUpdate);
    // 重定向页面
    ctx.redirect('/list');
})


// 启用路由
app.use(router.routes())
    .use(router.allowedMethods())

// 监听端口
app.listen(3000);
console.log('3000.......')

model/index.js : 连接数据库:

// 数据库连接
const mongoose = require('mongoose')

// 连接数据库
mongoose.connect('mongodb://localhost/user', {
        useNewUrlParser: true,
        useUnifiedTopology: true
    })
    .then(() => {
        console.log('数据库连接成功')
    })
    .catch(() => {
        console.log('数据库连接失败')
    })

model/user.js  创建数据库集合规则,创建数据库,添加数据

// 数据库集合规则
const mongoose = require('mongoose')
// 创建集合规则
const userSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true,
        minlength: 2,
        maxlength: 20
    },
    age: {
        type: Number,
        min: 18,
        max: 80
    },
    email: {
        type: String,
        required: true,
        maxlength: 30,
        minlength: 10
    },
    hobbies: {
        type: Array,
        default: ['抽烟', '喝酒', '烫头']
    },
    password: {
        type: String,
        required: true,
        maxlength: 30,
        minlength: 6
    }
})

// 根据集合规则创建集合
const User = mongoose.model('User', userSchema)

// 添加数据
/* User.create({
    name: '沙和尚',
    age: 20,
    email: 'shaheshang@163.com',
    hobbies: ['吃肉', '睡觉'],
    password: '1111111111'
}, {
    name: '唐僧',
    age: 20,
    email: 'tangseng@163.com',
    hobbies: ['吃肉', '睡觉'],
    password: '1111111111'
}, {
    name: '玉兔精',
    age: 20,
    email: 'yutujing@163.com',
    hobbies: ['吃肉', '睡觉'],
    password: '1111111111'
}) */
/* User.deleteMany({
    
}).then((result) => {
    console.log(result)
}) */
/* User.find({}).then((result) => {
    console.log(result)
}) */
// 导出用户集合表
module.exports = User

 

posted @ 2021-03-07 21:38  小小怪叫兽!  阅读(40)  评论(0编辑  收藏  举报