koa 框架套路-静态路由+ 动态路由

这篇博客,我打算,边写边做笔记的方式,把它写下来!

其实写笔记是最好的习惯,为啥,因为,只要你放到了**** 上,那么你走到任何一个地方,都可以看你自身的博客,而无需担心计算机坏啦,等乱起八糟的原因!不扯了,我们开始,博客写法,渐进式!

 

1, 基本路由使用!

index.js

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


let server = new Koa();
server.listen(3000);


let router = new Router();



router.get('/', async ctx=>{
	 ctx.body ="前台";
});


router.get('/admin', async ctx=>{
	 ctx.body ="后台";
})



server.use(router.routes());

我们只添加了 连个url 处理方式,很简单,我们看下浏览器访问,我用的是 搜狗浏览器,自带截图,很牛叉

 

koa 框架套路-静态路由+ 动态路由

koa 框架套路-静态路由+ 动态路由

 

看一个前台,一个后台,下面我们就是把 这两个子路由给分出去!

koa 框架套路-静态路由+ 动态路由

 

前台子路由:

koa 框架套路-静态路由+ 动态路由

修改 我们的index.js 如下:

 

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


let server = new Koa();
server.listen(3000);


let router = new Router();


router.use('/',require('./routers'));

router.use('/admin',require('./routers/admin'));

server.use(router.routes());

在这里我还有明确一下, 子路由的添加,用use ,访问具体的地址,用get post 或者all 

 

我们还有把上面的结构截图下,因为我用到了三个index.js

koa 框架套路-静态路由+ 动态路由

我在这里去强调下Node 的模块访问机制,当我们去访问一个目录的时候,它会默认的去找 该目录下的index.js 模块 

在Node中,一个js文件就是一个模块!

 

koa 框架套路-静态路由+ 动态路由


好,动态模块化,我们就搞定了!

下面我们就是加静态模块话,(其实就是静态资源的访问!),我们用到的是koa-static

我们打算将static路由加到跟路由下,这样的话,方便配置:

我们不要着急慢慢写!

1, 引入koa-static 

2,将静态路由挂在到根 动态路由下

router.use('/',require('./routers'));

router.use('/admin',require('./routers/admin'));


// 在这里添加静态路由
router.all(/((\.jpg)|(\.png)|(\.gif))$/i, static('./static', {
    maxage: 3*86400*1000
  }));
  router.all(/((\.js)|(\.jsx))$/i, static('./static', {
    maxage: 10*86400*1000
  }));
  router.all(/(\.css)$/i, static('./static', {
    maxage:2*86400*1000
  }));
  router.all(/((\.html)|(\.htm))$/i, static('./static', {
    maxage: 2*86400*1000
  }));
  router.all('*', static('./static', {
    maxage: 2*86400*1000
  }));


server.use(router.routes());

我们在动态路由的后面添加静态路由

 

我们访问结果:

koa 框架套路-静态路由+ 动态路由

 

koa 框架套路-静态路由+ 动态路由

 


前面呢,我们已经搭建好了路由,包括动态路由+ 静态路由都搞定了,下面我们继续搭建我们的基本服务器

上面的路由写法还是得继续改进,所以我们要把 静态路由抽取出去!

这个抽取很简单,我们就是把上面静态路由的东西都写成一个模块!

static.js

const static=require('koa-static');

module.exports=function (router, options){
  options=options||{};
  options.image=options.image||30;
  options.script=options.script||1;
  options.styles=options.styles||30;
  options.html=options.html||30;
  options.other=options.other||7;

  router.all(/((\.jpg)|(\.png)|(\.gif))$/i, static('./static', {
    maxage: options.image*86400*1000
  }));
  router.all(/((\.js)|(\.jsx))$/i, static('./static', {
    maxage: options.script*86400*1000
  }));
  router.all(/(\.css)$/i, static('./static', {
    maxage: options.styles*86400*1000
  }));
  router.all(/((\.html)|(\.htm))$/i, static('./static', {
    maxage: options.html*86400*1000
  }));
  router.all('*', static('./static', {
    maxage: options.other*86400*1000
  }));
};

 

koa 框架套路-静态路由+ 动态路由

下面就是使用这个模块了!

koa 框架套路-静态路由+ 动态路由

 

好,静态路由,动态路由,完全搞定