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. IIS7.5打开GZip压缩,同时启用GZip压缩JS/CSS文件的设置方法[bubuko.com]

    IIS7.5或者IIS7.0开启GZip压缩方法:打开IIS,在右侧点击某个网站,在功能视图中的“IIS”区域,双击进入“压缩”,如图下图: 分别勾选“启用动态内容压缩”和“启用静态内容压缩”.这样最 ...

  2. CocoaPods本身版本的更新

    sudo gem update --system sudo gem install cocoapods pod setup pod --version sudo gem install cocoapo ...

  3. C#程序以管理员身份运行

    选中"Security",在界面中勾选"Enable ClickOnce Security Settings"后,在Properties下就有自动生成app.m ...

  4. Oracle补习班第八天

    The best hearts are always the bravest. 心灵最高尚的人,也总是最勇敢的人. 1,权限.角色.与用户 创建用户 create user aa identified ...

  5. jquery 获取一组元素的选中项 - 函数、jquery获取复选框值、jquery获取单选按钮值

    做表单提交时,如果现在还在用form提交,用户体验很差,所以一般使用ajax提交. 其中需要获取每个表单输入元素的值,获取的时候像文本框这些还好说,Jquery提供了 .val() 方法,获取很方便, ...

  6. mybatis 中${}和#{}区别

    用#传入参数是,sql语句解析是会加上"",比如  select * from table where name = #{name} ,传入的name为小李,那么最后打印出来的就是 ...

  7. LeetCode 168. Excel Sheet Column Title

    Given a positive integer, return its corresponding column title as appear in an Excel sheet. -> A ...

  8. python1day

    下载地址 https://www.python.org/downloads/ 一 配置环境变量 右键计算机--属性--高级系统设置-高级-环境变量-系统变量--Administratorpath编辑- ...

  9. Coretext实现图文混排及Gif图片播放

    CoreText是iOS3.2推出的一套文字排版和渲染框架,可以实现图文混排,富文本显示等效果. CoreText中的几个重要的概念:  CTFont CTFontCollection CTFontD ...

  10. R语言将字符串矩阵转化为数值型矩阵

    这是原始数据的格式,当运行完下面的命令的时候,结果如下图 x=read.table("C:/Users/Administrator/Desktop/s1.txt") x=as.ma ...