1.上記のCRUDの例では、我々はすべてのルートとコントローラは、コードの成長を続ける当社の量になるまで、これは明らかに不合理である、でindex.jsで書かれています。したがって、我々は良いプロジェクト構造を構築する必要があります
まず、ルートディレクトリにアプリケーションフォルダを作成し、ディレクトリが配置されますindex.js
appフォルダでは、ディレクトリコントローラコントローラ、ルーティングディレクトリのルートを作成します
2.独立して機能するためには、ルートは、物事のルーティングのための唯一の責任があるミドルウェア機能とモジュールを担当して、我々は我々が記述したコードを分離する必要があります
インターフェイス機能によって、我々は一時的にプロジェクトは、ホームユーザーに分かれています
3.家庭用モジュール
コントローラ> home.js
クラスHomeCtl { インデックス(CTX){ ctx.body = '<のH1>これはホームである</ H1>' } } module.exportsは = 新しい HomeCtl()
路線> home.js
constのルータは=( 'KOA-ルータ'を必要) constのルータ = 新しいルーター() CONST {索引} =( '../コントローラ/ホーム'を必要とします) router.get( '/' 、インデックス) module.exportsは =ルータ
4.ユーザモジュール
コントローラ> users.js
constのデシベル= [ { "名前": "zhanghao" } ] クラスUSERCTL { // ユーザーのリストが取得 {(CTX)を見つけます ctx.body = デシベル } // ユーザが増加 {(CTX)を作成 ctx.verifyParams({ 名前:{タイプ: 'string'は、必要に応じ:真}、 年齢:{タイプ: '番号'、必要な:偽} }) db.push(ctx.request.body) ctx.body = ctx.request.body } // 特定のユーザ取得 findById(CTX){ IF(ctx.params.id。1 * <0 ){ CTX。スロー(404、「ユーザーが小さすぎると、見つかりません」) } ctx.body = DB [ctx.params.id * 1 ] } // ユーザの変更 {更新(CTX)を DB [ctx.params.id] = ctx.request.body ctx.body = ctx.request.body } // ユーザ削除 {削除(CTX)を db.splice(ctx.params.id、 1 ) ctx.status = 204 } } module.exportsは = 新しい USERCTL()
路線>ユーザー
constのルータは=( 'KOA-ルータ'を必要) CONSTルータ = 新しいルータ({接頭辞'/ユーザー}) CONST {削除、更新、作成、findByIdを見つける} =(」../コントローラ/ユーザの必要とします) router.get( '/' 、見つけます。) router.post( '/' 、作成) router.get( '/:ID' 、findById) ルータ。削除( '/:ID' 、削除) router.put( '/:ID' 、更新) module.exportsは =ルータ