私は基本的にそれぞれのルート名(すなわち:things.js
)のファイルを持っています 各ファイルにまったく同じものを使っています。ES6を使用してこのルートファイル(koa @ next-v2)を継承したクラスにするにはどうすればよいですか?
私はここで、特定のルートファイルにthings.js
を各要求メソッドのタイプを上書きする能力を持つデフォルトはthings.js
ルートファイルでないことbase.js
に基本Route
クラスを作成するES6クラスを使用します:
'use strict';
const path = require('path');
const fs = require('fs');
const name = path.basename(__filename, '.js');
const Router = require('koa-router');
const Controller = require(`../controllers/${name}`);
const controller = new Controller();
const router = new Router({ prefix: `/${name}` });
router.get('/', controller.getAll.bind(controller));
router.post('/', controller.post.bind(controller));
router.get('/:id', controller.get.bind(controller));
router.put('/:id', controller.put.bind(controller));
router.patch('/:id', controller.patch.bind(controller));
router.delete('/:id', controller.delete.bind(controller));
module.exports = router;
どういうわけか私は上記のコードをRoute.js
にしてから、その特定のルートのために何かを変更したい場合はclass Things extends Route {}
にします。
メソッドに関しては継承はできますが、継承モデルでこれらのルータ定義をどのように処理するかはわかりません。
これは基本クラスから実際に何かを継承しているわけではないので、これはあまり良いことではありません。また、代わりにどのように関数でこれを行うことができますか?私はES6クラスを使用することに結婚していない、ちょうどそれがデフォルトのセットをオーバーライドする最も簡単な方法だろうと思った。 – chovy
「本当に何かを継承しない」という言い方が分かりません。多分あなたが達成しようとしていることを具体的に説明すれば、私はもっと助けになるかもしれません。私の答えが示す基本クラスを拡張することによって、特定のルートに対して異なる動作を設定する方法を尋ねました。関数のコメントについては、「関数」ではなく「機能的に」と言わなければなりません。私はクラスベースの解決策がうまくいくことに同意するので、私はそれを言いましたが、それはあなたが具体的に求めているものです。 –