Day23

1-使用 koa 搭建服务器

  const Koa = require('koa');

  const app = new Koa();

  app.use(async ctx => {
    // ctx.body 即服务端响应的数据
    ctx.body = 'Hello Koa';
  })

  // 监听端口、启动程序
  app.listen(3000, err => {
  if (err) throw err;
  console.log('runing...');
  })

2-如何配置 koa 路由

  安装
  npm install koa-router --save 或者 yarn add koa-router --save
  npm install --save koa 或者 yarn add koa --save

  let Koa = require('koa');
  let Router = require('koa-router');

  /**
  * 配置路由的另一种方式:
  * let router = require('koa-router')(); 引入并实例化
  */

  // 实例化
  let app = new Koa();
  let router = new Router();

  // app.use(async(ctx) => {
  // ctx.body = '你好,koa路由';
  // });

  // 配置路由,ctx 上下文context,包含了request和response等信息
  router.get('/', async (ctx, next) => {
  ctx.body = "首页"; // 相当于:原生里面的res.writeHead() res.end()
  }).get('/news', async (ctx, next) => {
  ctx.body = "新闻";
  });

  app
  .use(router.routes()) // 启动路由
  .use(router.allowedMethods()); // 可配置可不配置,建议配置

  /**
  * router.allowedMethods()
  * 作用: 这是官方文档的推荐用法,我们可以看到 router.allowedMethods()用在了路由匹配 router.routes()之后,
  * 所以在当所有 路由中间件最后调用.此时根据 ctx.status 设置 response 响应头
  */

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

3-静态资源如何获取

  npm install --save koa-static
  const Koa = require('koa')

  // 引入node的path模块
  const path = require('path')
  // koa-static中间件,用于访问静态文件
  const static = require('koa-static')

  const app = new Koa()
  / 使用中间件,利用path模块的方法拼接出静态文件目录的绝对路径
  app.use(static(path.join(__dirname,staticPath)))

4-koa 如何使用模板引擎

   1. 安装
  npm install --save art-template
  npm install --save koa-art-template
  var Koa = require('koa'),
  router = require('koa-router')(),
  render = require('koa-art-template'), // 2. 引用
  path = require('path');

  var app = new Koa();

  配置 koa-art-template模板引擎
  render(app, {
  root: path.join(__dirname, 'views'), // 视图的位置
  extname: '.html', // 后缀名 如:index.html
  debug: process.env.NODE_ENV !== 'production' //是否开启调试模式

  });
  router.get('/', async (ctx) => {
  let app = {
  name: '张三11',
  h: '<h2>这是一个h211</h2>',
  num: 20,
  data: ['11111111', '2222222222', '33333333333']
  };
  await ctx.render('index', { // 4. 传参 渲染koa-art-template模板 index.html
  list: app
  });
  })

app.use(router.routes()); /*启动路由*/
app.use(router.allowedMethods());
app.listen(3000);

posted @ 2021-02-26 22:05  warisFairy  阅读(31)  评论(0)    收藏  举报