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
