app.js

var Koa = require('koa')

var fs = require('fs')
var path = require('path')
var koaStaticPlus = require('koa-static-plus')
var Router = require('./router') var app = new Koa()
//处理静态资源
app.use(koaStaticPlus(path.join(__dirname, '/dist'), {
pathPrefix: ''
})) Router.get('/', function (a) {
a.body = "xxxx"
})
Router.get('/aaa', function (a) {
a.body = "aaaaaa"
}) app.use(function (ctx, next) {
console.log(ctx.method, ctx.url)
Router.match(ctx, next)
}) app.listen(4000, function () {
console.log('server started 4000')
}) module.exports = app

集中定义路由

现有的所有路由在koa2 都不好用,GITHUB上示例又少,自己实现一个简单的

var Router = {map: {}}

'get,del,put,post'.replace(/\w+/g, function (a) {
var method = a.toUpperCase()
Router.map[method] = []
Router[a] = function (url, cb) {
var keys = []
var re = pathToRegexp(url, keys)
this.map[method].push({
re: re,
url: url,
cb: cb
})
}
})
var pathToRegexp = require('path-to-regexp') Router.onerror = function (ctx) {
ctx.body = '404!!'
}
Router.match = function (ctx, next) {
var array = this.map[ctx.method] || []
for (var i = 0, el; el = array[i++]; ) {
var aaa = el.re.exec(ctx.url)
if (aaa) {
var args = aaa.slice(1)
el.cb(ctx, next, args)
return
}
}
Router.onerror(ctx, next)
} module.exports = Router

//http://my.oschina.net/u/1416844/blog/660951
require("babel-core/register")(
{
presets: ['stage-3','es2015']
}
);
//http://stackoverflow.com/questions/31122193/babel-polyfill-what-is-that
require("babel-polyfill"); require("./app.js");

我们

koa2+koa-views示例的更多相关文章

  1. Koa + GraphQL 示例

    初始化项目 创建 graphql-example 文件夹进入后初始化一个 package.json 文件. $ mkdir graphql-example && cd $_ $ yar ...

  2. node中从express到koa再到koa2的发展历程

    koa是Express的下一代基于Node.js的web框架,目前有1.x和2.0两个版本. 历史 1. Express Express是第一代最流行的web框架,它对Node.js的http进行了封 ...

  3. Koa2学习(一)环境搭建

    Koa2学习(一)环境搭建 koa2脚手架 koa2服务安装 koa2-generator目录结构 什么是 Koa2 koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更 ...

  4. koa : Express出品的下一代基于Node.js的web框架

    https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501579966a ...

  5. 新一代web框架Koa源码学习

    此文已由作者张佃鹏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Koa 就是一种简单好用的 Web 框架.它的特点是优雅.简洁.表达力强.自由度高.本身代码只有1000多行 ...

  6. koa2--04.ejs模板引擎

    首先在项目文件下使用cmd,输入:npm install --save koa-views ejs,将koa-views中间件和ejs模板引擎安装到文件中,并自动写入依赖 接在在index.js文件中 ...

  7. AutoLayout(自动布局)

    1. iOS两种自适应布局方式:(修正说明:) -AutoLayout(自动布局) + SizeClasses(尺寸类别) -Autoresizing (自动调整尺寸/弹簧式调整尺寸) 前者 Auto ...

  8. iOS开发之Autolayout

    1.概述 在以前的iOS程序中,是如何设置布局UI界面的? (1)经常编写大量的坐标计算代码 (2)为了保证在3.5 inch和4.0 inch屏幕上都能有完美的UI界面效果,有时还需要分别为2种屏幕 ...

  9. Django生命周期,FBV,CBV

    一. Django生命周期 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串,在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页中.Django的请求生命周 ...

随机推荐

  1. dotNet下的一套解决方案

    很久没在博客园写文章了,打算把一直由自己一个人写的一整套系统开放出来,今天先放一些截图及可以演示的地址! 这套系统包含数据层(HB.Data).计划任务(HB.PlanTask).日志系统(HB.Lo ...

  2. 黄聪:关闭Win2003开机提示“上次意外关机”对话框

    很多人在使用win2003服务器(特别是vps)的时候,都会意外关机,然后出现开机提示“上次意外关机”对话框,如果不及时发现,会影响到使用该服务器的网站,所以必须把这提示关闭,方法如下: 1.开始菜单 ...

  3. 在Eclipse中使用JUnit4进行单元测试(高级篇)

    通过前2篇文章,您一定对JUnit有了一个基本的了解,下面我们来探讨一下JUnit4中一些高级特性. 一.高级Fixture 上一篇文章中我们介绍了两个Fixture标注,分别是@Before和@Af ...

  4. 换一个思路压缩图片,RGB转YUV

    一般的压缩方案 做移动平台,终究都是要考虑纹理压缩的问题 IOS/PVR平台上一般会选用PVRTC格式,这个格式压缩还是很给力. Android上设备种类很多,支持的格式各有不同.如果平台能支持下载前 ...

  5. 关于Exception

    Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]"   1.java.lang ...

  6. OAF_文件系列7_实现OAF处理Excel的JXL包介绍(概念)

    20150714 Created By BaoXinjian

  7. Hololens开发笔记之Gesture手势识别(Manipulation手势控制物体平移)

    Manipulation gesture:保持点击手势,在3D世界中绝对运动 当你想要全息图像1:1响应用户手部移动时,操纵手势能被用于移动.缩放或旋转全息图像.如此的一个用处是使得用户可以在世界中绘 ...

  8. angular(3)服务 --注入---自定义模块--单页面应用

    ng内部,一旦发生值改变操作,如$scope.m=x,就会自动轮询$digest队列,触发指定的$watch,调用其回调函数,然后修改dom树. 干货:https://github.com/xufei ...

  9. 在shiro-cas中实现 Jasig-cas的Single Sign Out 功能

    1 Single Sign Out 功能 即单点登出功能.也就是在任意子系统进行登出操作后,其他子系统会自动登出. 实际CAS登出的步骤为 所以每个子系统都需要实现一个sso登出响应. cas-cli ...

  10. 使用compass编译sass

    1.初始化项目 compass create test(项目名称),会在当前目录下创建test子目录,test的子目录下有config.gb文件,sass和stylesheets文件夹. 2.编写sa ...