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
posted @ 2021-03-07 23:06  路~  阅读(61)  评论(0)    收藏  举报