node_eggフレームワークプロジェクトの展開ディレクトリ構造_

// 高速初期化の卵プロジェクト
// 卵のディレクトリを作成し、卵を開いて、省略することができる 
$ます。mkdir卵を- && CD卵例

// 卵プロジェクト生成足場 
$ NPMのinit = --type卵シンプル
 // インストールエラーの
  エラーコードENOLOCAL 
  エラーからインストールできませんでした「ファイル\ nodejs \ node_cache \ _npx \ 18476」ITはpackage.jsonファイルが含まれていないAS。
 // 解決策:
  次のディレクトリにプロジェクトを実行するために、「ノードのキャッシュパスの交換」:
  #npm設定SETキャッシュ - :「\ Users \ユーザーのログオンウィンドウのユーザー名\のAppData \ローミング\ NPM-キャッシュC」、株式会社参加無料
  「ディレクトリと - 地球間のスペースなし」。

// インストールが依存している
NPM I $を

// プロジェクト開始:
$ NPMのRUN devのを
オープンHTTP $:// localhostを:7001 


// ディレクトリ構造プロジェクト
├──package.json 
├──app.js(オプション)                   // カスタムのスタートアップの初期化 
├──agent.js(オプション)                 // カスタム起動時の初期化のための
├──のApp
 |├──router.jsは                   // のconfigure URLルーティングルールに使用 
│├──コントローラー                  // 後リターンを処理し、ユーザーの入力を解析するために使用対応する結果は、 
│|    └──home.js 
│├──サービス(オプション)              // ビジネスロジックを記述するための 
│|    └──user.jsの
│├──ミドルウェア(オプション)           // について書き込みミドルウェア 
│|   Response_time.js└── 
│├──スケジュール(オプション)             // タイミングタスクについて 
│|    └──my_task.js 
│├──パブリック(オプション)               // index.htmlを静的リソースを配置するため、CSS 、IMG ..... 
│|    └──reset.css 
│├──(別売)を表示                 // テンプレートファイルを配置するために使用 
│|    home.tplのは、すでに持っているため└── 
└──│(オプション)拡張               // フレームの拡張
│├──helper.js(オプション)
│├──request.js(オプション)
│├──response.js(オプション)
│├──context.js(オプション)
│ ├──application.js(オプション)
│└──agent.js(オプション)
├──設定
 |├──plugin.js                   // 負荷にプラグインを設定するために使用 
|├──設定。デフォルトの.js           // 設定ファイルの書き込みに使用
│├──config.prod.jsを
 |    config.test.js(オプション)├──
 |    ├─ ─config.local.js(オプション)
 |    └──(オプション)config.unittest.js 
└──テスト                            // ユニットテスト
    ├──ミドルウェア
     |    └──response_time.test.js 
    └──コントローラ
        └─ home.test.js─ 



// フレームベースオブジェクト構築された
アプリケーション、コンテキスト、要求、応答、およびいくつかは、フレームの拡張(コントローラ、サービス、ヘルパー、Configを、ロガー)オブジェクト

// アプリケーションオブジェクト
// Aでは、アプリケーションはグローバルアプリケーションオブジェクトですアプリケーションは、唯一のインスタンスを作成します 
// コントローラ、ミドルウェア、ヘルパー、サービスアプリケーションオブジェクトthis.appを介してアクセスすることができる
  //イベント:
  サーバー:このイベントは、HTTPサービスの完了後に開始し、ワーカープロセス後にトリガされます。このイベントを通じてますHTTPサーバーこれらは、開発者に公開します。
  エラー:異常がプラグインのonError捕獲された後がありますが、エラーイベント、コンテキスト・エラー・オブジェクトとそれに関連するランタイム開発者に暴露さが(存在する場合)、あなたが報告およびその他のカスタム処理をログに記録することができますがトリガされます。
  リクエストとレスポンス:アプリケーションは、それぞれの要求への要求と応答を受け、開発者がログに記録されるこれらのイベントを監視することができ、リクエストとレスポンスのイベントや公開、現在の要求コンテキストをトリガーします。
  @ アクセス: 
  によってコントローラ、サービスベースクラスのインスタンスで継承、このアプリケーションオブジェクトへのアクセス.appを。

// コンテキスト・オブジェクト
// オブジェクトコンテキストは、要求レベルで、サービス・コンテキスト・インスタンスのすべてにマウントされますフレームワークは、 
最も一般的な方法は、コンテキストインスタンスミドルウェア、コントローラーおよびサービスは、あなたを介してすることができます取得することで、この.ctxへの訪問をContextオブジェクト


//リクエスト&レスポンスオブジェクト
// リクエストがKoa.Requestから継承したクラスのオブジェクト要求、です。HTTPリクエスト・オブジェクトは、ネイティブのNode.jsがHTTPの一連の援助共通パラメータを要求を取得する方法が提供されるカプセル化します。
// レスポンスがKoa.Responseから継承したクラスのオブジェクト要求、です。HTTPレスポンスのNode.jsネイティブオブジェクトをカプセル化し、サポートHTTPレスポンスの範囲を設定する方法が提供されます。
  // 取得の実施形態では
  、インスタンス要求(ctx.request)と応答(ctx.response)コンテキストインスタンス内の現在の要求を得ることができます。
  // アプリ/コントローラ/ user.jsの
  クラス延びコントローラ{UserControllerで
    非同期(){FETCH 
      CONSTは{アプリケーション、CTXは} = この; 
      CONST ID = ctx.request.query.id; 
      ctx.response.body = app.cache.get (ID); 
    } 
  } 
  //例のように、等価ctx.request.query.idとctx.query.idあるctx.response.body = ctx.body =と等価です。
  // POST本体ではなくctx.body、ctx.request.bodyを使用する必要があります取得することに注意してください。

// コントローラオブジェクト
// フレームワークは、コントローラの基本クラスを提供し、すべてのコントローラは、基本クラスの実装を継承することをお勧めします。基本クラスには、次のプロパティコントローラ有する 
    - CTX 現在の要求のコンテキスト例。
    アプリケーション - アプリケーションのアプリケーションインスタンス。
    設定 - 構成アプリケーション。
    サービス - すべてのサービスを適用します。
    ロガー - 現在のターゲットコントローラロガーパッケージ。
  // アプリ/コントローラ/ user.jsの 
  CONST =コントローラ(「卵」が必要).Controller; 
  クラスを拡張UserControllerでコントローラ{ 
    //実装
  } 
  module.exportsは = UserControllerでの; 


// サービスオブジェクト
// フレームワークサービスは、基本クラスを提供し、サービス継承するすべての基本クラスに実装することをお勧め。
// 基本クラスとプロパティサービスコントローラベースクラス、同様にアクセスの属性:
  // APP / -サービス/ user.jsの 
  CONST =サービス(「卵」が必要).service、
  サービスを拡張するクラスをUserServiceの{ 
    // 実装
  } 
  Module1を.exports = UserServiceの。

 

おすすめ

転載: www.cnblogs.com/JunLan/p/12535930.html