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. MySQL服务 - MySQL 5.5编译安装

    cmake介绍: MySQL 5.5之后,所有的编译操作都通过cmake进行,使用cmake最大的好处是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码 ...

  2. SonarQube的使用入门

    SonarQube的安装.配置与使用 详情请参照原博客:http://www.cnblogs.com/qiaoyeye/p/5249786.html SonarQube是管理代码质量一个开放平台,可以 ...

  3. 【uTenux】学习一个嵌入式操作系统-uTenux

    [这个是汇总] 最近有点时间,参加了EEPW论坛和悠龙咨询组织的一个嵌入式操作系统uTenux试用活动.本来想借助这个活动提供的开发板做一个小项目,奈何OS使用功底太次.于是,这个活动被我降低到了学习 ...

  4. 手机平板等移动端适配跳转URL的js代码

    <script type="text/javascript"> if(/AppleWebKit.*mobile/i.test(navigator.userAgent) ...

  5. java动态绑定的一点注意

    动态绑定只是针对对象的方法,对于属性无效.因为属性不能被重写. show me code: public class Father{ public String name = "父亲属性&q ...

  6. sql 中 left join 的使用

    left join .是以左表为基础,查询右表的值.如果在右表中没用没有数据,则为NULL. 这里有三张表. 线路bs_line:id,name(id主键) 线路段bs_seg:id,l_id,nam ...

  7. (Collection)350. Intersection of Two Arrays II

    /* Given two arrays, write a function to compute their intersection. Example: Given nums1 = [1, 2, 2 ...

  8. Linux学习笔记之——安装虚拟机后,如何启用网卡

    版本:CentOS-6.5-i386-minimal 虚拟机:vmware 11.1.2   安装完之后是看不到网卡信息的,如下:         我们编辑网卡etho的配置信息:         将 ...

  9. git上传到阿里云code

    一.在阿里云code(kelude)注册用户,新建项目.二.安装Git后使用GitBash生产ssh key:(https://zhidao.baidu.com/question/1303468264 ...

  10. mysql数据库字符集的设置

    my.ini文件中clinet和mysqld中的写法不一样,要注意  [client]   port=3306   default-character-set=utf8      [mysqld]   ...