説明
- 前:[MVCはTERを達成]
- 基本原則ルーター層、コントローラ層、サービス層、およびマルクラスによってこれらのレベルの間でパラメータを渡す必要の成功を達成するために前。
- これは主に、具体的な運用レベルによって達成されます。
- ルーター層:ページのルーティング、モニター、およびコールルーティングハンドラコントローラ層
- コントローラー層:サービスを提供するために、ルーター層、サービス層を呼び出すには、データ処理を提供します。
始めます
ローカルホスト:3000アクセスにブラウザを開き
- この場合いいえ、ルーティング処理機能。
- 栗:データ復帰
ルータ層
- アイデア:
層呼ルータKOAにおいて
接触がルーティング機能処理経路確立2.
3.マウントルーティング
:4.ルールを定義this.koa = new koa(conf)
するthis.$app = new koa(conf)
(KOAは一例である)複数の意味パラメータを作成します。
const koa = require('koa');
const koaRouter = require('koa-router');
class Mar {
constructor(conf) {
this.$app = new koa(conf);
this.$router = new koaRouter();
this.service = new Service(this);
this.controller = new Controller(this);
this.router = new Router(this);
}
}
class Router {
constructor(app) {
const { controller, $router, $app } = app;
$router.get('/', controller.index);
$app.use($router.routes());
}
}
- この場合、ルーター層、KOA-ルータの使用の成功は、作成したルートをマウント
- 以下のメソッドは、インデックスのみコントローラクラスを作成します。
- KOA-ルータ、CTXが合格するとき、モニターをルーティングし、次のターゲット
コントローラ層
- CTXを使用してこの方法の書き込み率層、および戻りオブジェクト
class Controller {
constructor() {
const { service } = app;
console.log('service:', service.test());
this.service = service;
}
async index (ctx) {
ctx.body = {
name: 'marron',
age: 18,
remarks:`forever 18`
}
}
}
このときは、http:// localhostを:3000は、以下の情報を返します。
- サービス層の非同期メソッド呼び出し
async index (ctx) {
ctx.body = await service.getName();
}
- リフレッシュが
http://localhost:3000
いるので文句を言うでしょうservice没有定义
- よくお読み機能があります:
- 私達はちょうどにある
constructor
機能の使用this.service = service
this.service = service
実際、ちょうどマウント方法(コントローラ)インスタンスへ。- どのようにサービス層でメソッドを使用するには?そのクラスコントローラのための方法を提供し
、クラスは単なる糖衣構文である-3.1 JavaScriptでは、実際にクラスの概念ではありません
-3.2以下のコードを見て
class Point {
constructor() {...},
getX() {...},
getY() {...}
}
// 等同于
Point.prototype = {
constructor() {},
getX() {},
getY() {}
}
上記のおかげで、次のインスピレーション:
- 層を初期化するときに、コントローラは、この方法サービスコントローラは、プロトタイプを実装します
- 内部メソッドを使用する場合、所望の方法を取るプロトタイプで始まります
改善されたルータ層
class Controller {
constructor(app) {
const { service } = app;
console.log('service: ', service.test());
// 将service挂载Controller的原型上
Controller.prototype = service;
}
test() {
return `Controller for Router`
}
async index(ctx) {
const service = Controller.prototype.service
ctx.body = await service.index();
}
}
ここでは、基本的に満たすように設計:
- 月によって渡された層に必要なパラメータ
- ルータ層をルーティングモニター、及び方法コントローラへのルートに対応する層
- コントローラ層サービス層のメソッド呼び出し
サービス層
- インデックスレイヤメソッドを追加します
class Service {
constructor(app) {
console.log('Service: ok');
}
test() {
return `Service for Controller`
}
async index() {
return {
name: 'marron',
age: 18,
remarks: `forever 18`
}
}
}
概要
- これは、ルータ、コントローラ、サービス層内の特定の通信の実現であります
- 次は、モデル層に追加しました。そして、このシリーズを要約します