ハロkoa
4495 ワード
NodeJSプラットフォームで一番人気のあるフレームワークはexpressではないでしょうか?しかし、es 6の中の優勢文法を使っていないようです.そこで、expressチームはまたkoaというフレームを作りました.jsをめったに書かない人にとって、初めからkoaを使っていますが、難しい曲線は急です.どんなに険しいことでも上に登らなければなりません.
まず、koaと認識してみます.この文書から、koaは極簡単な枠組みであり、ルートの機能も第三者の中間部品を借りる必要があります.中間件とは何ですか?現在の私の理解は機能プラグインです.koa-generatorを使って新しいプロジェクトを作ってみます.
プロジェクトが完成したら、プロジェクトのルートディレクトリのap.jsを開きます.
まずルート機能を見てください.
まずルートクラスを導入します.
オン/ロutes/users.js:
users.jsの中を:
前の予想が確認されました.ルートのロジックは私達が新しいjsを作って実現できます.ap.jsコードを修正する必要がなくて、全体のプロジェクト構造も分かります.
ap.jsに現在のプロジェクトのルートクラスを追加します.test.js
まず、koaと認識してみます.この文書から、koaは極簡単な枠組みであり、ルートの機能も第三者の中間部品を借りる必要があります.中間件とは何ですか?現在の私の理解は機能プラグインです.koa-generatorを使って新しいプロジェクトを作ってみます.
プロジェクトが完成したら、プロジェクトのルートディレクトリのap.jsを開きます.
var app = require('koa')()
//
, koa = require('koa-router')()
, logger = require('koa-logger')
, json = require('koa-json')
, views = require('koa-views')
, onerror = require('koa-onerror');
//
var index = require('./routes/index');
var users = require('./routes/users');
// views
app.use(views('views', {
root: __dirname + '/views',
default: 'jade'
}));
// post body
app.use(require('koa-bodyparser')());
// json
app.use(json());
// log
app.use(logger());
// , generator
app.use(function *(next){
//
var start = new Date;
// next
yield next;
// next ,
var ms = new Date - start;
console.log('%s %s - %s', this.method, this.url, ms);
});
//
app.use(require('koa-static')(__dirname + '/public'));
//
koa.use('/', index.routes(), index.allowedMethods());
koa.use('/users', users.routes(), users.allowedMethods());
//
app.use(koa.routes());
//
app.on('error', function(err, ctx){
log.error('server error', err, ctx);
});
module.exports = app;
いくつかのコメントをすると、app.jsはプロジェクト設定のロジックであることが分かります.まずルート機能を見てください.
まずルートクラスを導入します.
//
var index = require('./routes/index');
var users = require('./routes/users');
次にルートを定義します//
koa.use('/', index.routes(), index.allowedMethods());
koa.use('/users', users.routes(), users.allowedMethods());
//
app.use(koa.routes());
この時私達は127..0.1:3000を訪問してルートに着きました./routes/indexの中で127.1.0.1:3000/usersを訪問してルートに着きました.オン/ロutes/users.js:
var router = require('koa-router')();
router.get('/', function *(next) {
this.body = 'this a users response!';
});
module.exports = router;
router.get方法の最初のパラメータは'/''であることがわかったが、getの最初のパラメータの中で'/users'が省けますか?実験をしますusers.jsの中を:
var router = require('koa-router')();
router.get('/', function *(next) {
this.body = 'this a users response!';
});
router.get('/test', function *(next) {
this.body = 'this a users test response!';
});
module.exports = router;
127.1.0.1:3000/users/testにアクセスして、ブラウザにthis a users test reponseを表示します.bingo前の予想が確認されました.ルートのロジックは私達が新しいjsを作って実現できます.ap.jsコードを修正する必要がなくて、全体のプロジェクト構造も分かります.
ap.jsに現在のプロジェクトのルートクラスを追加します.test.js
var app = require('koa')()
//
, koa = require('koa-router')()
, logger = require('koa-logger')
, json = require('koa-json')
, views = require('koa-views')
, onerror = require('koa-onerror');
//
var index = require('./routes/index');
var users = require('./routes/users');
var test = require('./routes/test');
// db
var db = require('./app/models/db/db');
// views
app.use(views('views', {
root: __dirname + '/views',
default: 'jade'
}));
// post body
app.use(require('koa-bodyparser')());
// json
app.use(json());
// log
app.use(logger());
// , generator
app.use(function *(next){
//
var start = new Date;
// next
yield next;
// next ,
var ms = new Date - start;
console.log('%s %s - %s', this.method, this.url, ms);
});
//
app.use(require('koa-static')(__dirname + '/public'));
//
koa.use('/', index.routes(), index.allowedMethods());
koa.use('/users', users.routes(), users.allowedMethods());
koa.use('/test', test.routes(), test.allowedMethods());
//
app.use(koa.routes());
//
app.on('error', function(err, ctx){
log.error('server error', err, ctx);
});
module.exports = app;
このように、すべての127..0.1:3000/testからのアドレスはtest.jsにルーティングされます.