23
1-使用 koa 搭建服务器
1 var koa=require('koa') 2 var app=new koa() 3 app.use(async(ctx)=>{ 4 ctx.body='koa' 5 }) 6 app.listen(3000,()=>{ 7 console.log('服务器已启动,端口正在监听...') 8 })
2-如何配置 koa 路由
1 var koa=require('koa') 2 var app=new koa() 3 var Router=require('koa-router') 4 var router=Router() 5 router.use('/',(ctx)=>{ 6 ctx.body='koa' 7 }) 8 app.use(router.routes()) 9 .use(router.allowedMethods()) 10 app.listen(3000,()=>{ 11 console.log('服务器已启动,端口正在监听...') 12 })
3-静态资源如何获取
1 var koa=require('koa') 2 var app=new koa() 3 var Router=require('koa-router') 4 var router=Router() 5 var path=require('path') 6 var static=require('koa-static') 7 app.use(static(path.join(__dirname,'public'))) 8 router.use('/',(ctx)=>{ 9 ctx.body='koa' 10 }) 11 app.use(router.routes()) 12 .use(router.allowedMethods()) 13 app.listen(3000,()=>{ 14 console.log('服务器已启动,端口正在监听...') 15 }) 16 4-koa 如何使用模板引擎 17 var koa=require('koa') 18 var app=new koa() 19 var Router=require('koa-router') 20 var router=Router() 21 var path=require('path') 22 var static=require('koa-static') 23 app.use(static(path.join(__dirname,'public'))) 24 var render=require('koa-art-template') 25 render('app',{ 26 root:path.join(__dirname,'views'), 27 extname:'.html', 28 debug:procress.env.NODE_ENV!=='productions' 29 }) 30 router.use('/',async(ctx)=>{ 31 await ctx.render('apps',{ 32 name:'张三' 33 }) 34 }) 35 app.use(router.routes()) 36 .use(router.allowedMethods()) 37 app.listen(3000,()=>{ 38 console.log('服务器已启动,端口正在监听...') 39 })
4- koa 如何使用模板引擎:
1 // 模板引擎 2 const koa = require('koa') 3 const router = require('koa-router')(); 4 // 引入模板引擎 5 const ejs = require('ejs') 6 const views = require('koa-views') 7 const render = require('koa-art-template') 8 const path = require('path') 9 10 const app = new koa(); 11 render(app, { 12 root: path.join(__dirname, 'views'), 13 extname: '.html', 14 debug: process.env.NODE_ENV !== 'production' 15 }) 16 // 路由请求 17 router.get('/add', async (ctx) => { 18 // let html = ejs.render('', users); 19 let lis = '张三' 20 await ctx.render('index', { 21 lis 22 }) 23 }) 24 25 // 启用 26 app.use(router.routes()) 27 .use(router.allowedMethods()) 28 29 // 监听请求 30 app.listen(3000) 31 console.log('3000......')
5- 使用 koa 实现一个用户增删改查的案例:
app.js为入口文件,功能是导入文件,配置路由,引入koa组件,最后启动服务。
1 // 安装koa 2 const koa = require('koa'); 3 require('./model/index.js'); 4 const path = require('path'); 5 const queryString = require('querystring'); 6 7 // const bodyParser = require('koa-bodyparser'); 8 const bodyParser = require('koa-bodyparser') 9 10 // 加载模板引擎 11 const render = require('koa-art-template') 12 // 加载 13 14 // 加载数据库 15 const User = require('./model/user.js'); 16 // 加载路由模块,创建路由对象 17 const router = require('koa-router')(); 18 19 // 创建服务器 20 const app = new koa(); 21 22 // 处理post参数 23 app.use(bodyParser()); 24 25 render(app, { 26 root: path.join(__dirname, 'views'), 27 extname: '.art', 28 debug: process.env.NODE_ENV !== 'production' 29 }) 30 31 // 添加路由请求 32 router.get('/add', async (ctx) => { 33 await ctx.render('add', {}) 34 }); 35 router.get('/list', async (ctx) => { 36 let user = await User.find(); 37 await ctx.render('list', { 38 user 39 }) 40 }); 41 42 // 添加用户 43 router.post('/add', async (ctx) => { 44 /* ctx.body = ctx.request.body; 45 console.log(ctx.body) */ 46 47 await User.create(ctx.request.body); 48 // 重定向页面 49 ctx.redirect('/list'); 50 }); 51 // 删除用户 52 router.get('/remove/:id', async (ctx) => { 53 // console.log(ctx.params) 54 // ctx.body = ctx.params 55 let id = ctx.params.id.substring(1, ctx.params.id.length - 1); 56 // ctx.body = id; 57 // console.log(id); 58 await User.findOneAndDelete({ 59 _id: id 60 }); 61 // 重定向页面 62 ctx.redirect('/list'); 63 }); 64 65 // 修改用户 66 router.get('/modify/:id', async (ctx) => { 67 let query = ctx.params.id.substring(1, ctx.params.id.length - 1); 68 console.log(query) 69 let user = await User.findOne({ 70 _id: query 71 }) 72 // console.log(user) 73 let hobbies = ["足球", "篮球", "橄榄球", "敲代码", "抽烟", "喝酒", "烫头"] 74 ctx.render('modify', { 75 user, 76 hobbies 77 }) 78 }) 79 // 修改 80 router.post('/modify/:id', async (ctx) => { 81 let id = ctx.params.id.substring(1, ctx.params.id.length - 1); 82 let userUpdate = ctx.request.body; 83 await User.updateOne({ 84 _id: id 85 }, userUpdate); 86 // 重定向页面 87 ctx.redirect('/list'); 88 }) 89 90 91 // 启用路由 92 app.use(router.routes()) 93 .use(router.allowedMethods()) 94 95 // 监听端口 96 app.listen(3000); 97 console.log('3000.......')
model/index.js : 连接数据库:
1 // 数据库连接 2 const mongoose = require('mongoose') 3 4 // 连接数据库 5 mongoose.connect('mongodb://localhost/user', { 6 useNewUrlParser: true, 7 useUnifiedTopology: true 8 }) 9 .then(() => { 10 console.log('数据库连接成功') 11 }) 12 .catch(() => { 13 console.log('数据库连接失败') 14 })
model/user.js 创建数据库集合规则,创建数据库,添加数据
1 // 数据库集合规则 2 const mongoose = require('mongoose') 3 // 创建集合规则 4 const userSchema = new mongoose.Schema({ 5 name: { 6 type: String, 7 required: true, 8 minlength: 2, 9 maxlength: 20 10 }, 11 age: { 12 type: Number, 13 min: 18, 14 max: 80 15 }, 16 email: { 17 type: String, 18 required: true, 19 maxlength: 30, 20 minlength: 10 21 }, 22 hobbies: { 23 type: Array, 24 default: ['抽烟', '喝酒', '烫头'] 25 }, 26 password: { 27 type: String, 28 required: true, 29 maxlength: 30, 30 minlength: 6 31 } 32 }) 33 34 // 根据集合规则创建集合 35 const User = mongoose.model('User', userSchema) 36 37 // 添加数据 38 /* User.create({ 39 name: '沙和尚', 40 age: 20, 41 email: 'shaheshang@163.com', 42 hobbies: ['吃肉', '睡觉'], 43 password: '1111111111' 44 }, { 45 name: '唐僧', 46 age: 20, 47 email: 'tangseng@163.com', 48 hobbies: ['吃肉', '睡觉'], 49 password: '1111111111' 50 }, { 51 name: '玉兔精', 52 age: 20, 53 email: 'yutujing@163.com', 54 hobbies: ['吃肉', '睡觉'], 55 password: '1111111111' 56 }) */ 57 /* User.deleteMany({ 58 59 }).then((result) => { 60 console.log(result) 61 }) */ 62 /* User.find({}).then((result) => { 63 console.log(result) 64 }) */ 65 // 导出用户集合表 66 module.exports = User
浙公网安备 33010602011771号