需要
保存することができる基本的なデータへの対話型インタフェースを通じて開発Nodejsフロントエンドの開発シナリオの人気が、フルスタックの開発を実現するシームレス。あなたはインターフェースとデータベース開発の一握りをしようとすると、最近の社内のプロジェクト管理ツールでは実現しています。
Egg.jsは何ですか
Egg.jsアリは、オープンソースの開発フレームワークNodejsのセットです。はじめにEgg.js公式ウェブサイトです。
Egg.jsと生まれたエンタープライズ向けのアプリケーションフレームワークは、我々はEgg.jsによって開発チームと開発者は、開発コストと保守コストを削減することができますより上位のフレームワークを飼育していることを願っています。
なぜあなたはすべての設定はの一部を非表示にする傾向があり、Expressは、実際にまたはすぐにプロジェクトをビルドする時間を短縮、開発するために、Egg.jsは、開発者のためのほとんどの最も一般的なディレクトリ構造に設計されていない、Egg.js、というより興亜を選びました事業の独立の技術的な詳細。開発者はビジネスロジックにとEgg.jsと関連プラグイン、開発機能のサポートにより、より集中することができます。
Egg.jsも、一貫した開発経験を確保しながら、あなたは簡単に別のプロジェクトを維持することができ、不要なミスを削減することで合意と一致し、私も同意し、「設定より規約」を、推進しています。
プロジェクトを初期化します
Egg.jsは、高速初期化足場プロジェクトを提供していますが、それは基本的に問題はありません、NPM> = 6.1.0が必要です。
$のは、mkdir卵例&& CD卵例の $のNPMのinit卵--type =シンプルな $のNPMのI
その後、プロジェクトを開始
$ NPMの実行のdevの $オープンのhttp:// localhostを:7001
カタログデザイン
そのためEgg.jsは、あまりにも多くのことを行っている、と私は、アプリの設定に焦点を当てる必要があります。
├──アプリ | ├──router.js │├──コントローラ │| └──home.js │├──サービス │| └──user.jsの │├──モデル │| └──user.jsの ├──設定 | ├──plugin.js | └──config.default.js
アプリ/ router.js URLルーティングルールを設定するために使用さは、つまり、あなたはロジックコントローラに対応するインターフェイスアドレスを、アクセスしてください。
アプリ/コントローラ/ **ユーザの入力を解析するために、あなたが実際に書くことができ、結果後処理、および論理的なサービスモデルを返しますが、単一責任の原則に基づいて、我々は主要な分析パラメータを配置しますし、コントローラに値を返すだけでなく、論理NOT演算データベース。
アプリ/サービス/ **ビジネスロジック層、オプションを書き込むために、それはあなたがパッケージのペアのデータベース操作を理解することができ、使用することをお勧めします。
アプリ/モデル/ **それはEgg.jsはCTX、簡単に呼び出しにバインドされたMongoDBのリンクデータベースとモデルをパッケージ化されたある魔法の一部であるMongoDBのスキーマ定義、ため。
設定/ config.default.js設定ファイルを書き込むために使用される、さまざまな開発環境、異なる変数を設定することができますが、ビジネスは比較的単純であるため、内部使用のために、これだけのデフォルト設定を使用します。私は上のクロスドメインの設定、マングース、CSRFなどを投影します。
config.mongoose = { URL: "のMongoDB://127.0.0.1/*****" オプション:{} }。 config.cors = { 起源: '*'、 allowMethods: 'GET、HEAD、PUT、POST、DELETE、PATCH' } config.security = { CSRF:{ イネーブル:偽、 }、 }。
configが/ plugin.jsプラグは、卵マングース、卵CORSとして、ロードするように構成されました。
module.exportsは= { マングース:{ イネーブル:真、 パッケージ: "卵マングース" }、 CORS:{ イネーブル:真、 パッケージ: "卵CORS" } }。
コードが私のテンプレートの初期化でブログES6コードの多くを提供することであり、次のように、実行可能ではないことに留意すべきです。
exports.cors = { イネーブル:真、 パッケージ'卵CORS' }
開発プロジェクト
その後、データベーススキーマを設計して、対応するコントローラをサポートするための新しいルートを追加するには、>サービス - モデル - >ルーティング - > Contoller:良い基盤を構築し、開発が非常に簡単になり、私は論理に従っていますサービスで完全なデータベース操作。
router.js
router.get( "/ API /タスク"、controller.task.index)。 router.post( "/ API /タスク"、controller.task.create)。 router.put( "/ API /タスク/:ID"、controller.task.update)。 router.delete( "/ API /タスク/:ID"、controller.task.destroy)。 //也可以简写为 router.resources( '話題'、 '/ API /タスク'、controller.task)。
方法コントローラは、以下の対応関係を具体的に参照して実施することが可能です
方法 | パス | ルート名 | Controller.Action |
---|---|---|---|
取得する | /投稿 | 投稿 | app.controllers.posts.index |
取得する | /投稿/新 | new_post | app.controllers.posts.new |
取得する | /記事/:ID | 役職 | app.controllers.posts.show |
取得する | /記事/:ID /編集 | edit_post | app.controllers.posts.edit |
役職 | /投稿 | 投稿 | app.controllers.posts.create |
プット | /記事/:ID | 役職 | app.controllers.posts.update |
DELETE | /記事/:ID | 役職 | app.controllers.posts.destroy |
コントローラ/ task.js
exports.index =関数*(){ // ... CONST結果=降伏this.service.task.index(this.params)。 this.body =結果; }。 exports.create =関数*(){ // ... CONST結果=降伏this.service.task.create(this.request.body)。 this.body =結果; }。 exports.update =関数*(){ // ... CONST結果=降伏this.service.task.update(this.params.id、this.request.body)。 this.body =結果; }。 exports.destroy =関数*(){ // ... CONST結果=降伏this.service.task.destroy(this.params)。 this.body =結果; }。
サービス/ task.js
module.exportsは=アプリ=> { クラスTaskServiceはapp.Service {延び *指数(paramsは){ タスク=降伏this.ctx.model.Task.find(paramsは)とすると、 せ結果= {}; result.data =タスク。 結果を返します。 } * {(リクエスト)を作成 } {*更新(ID、要求) } *破壊(paramsは){ } } TaskServiceを返します。 }。
モデル/ task.js
module.exportsは=アプリ=> { CONSTマングース= app.mongoose。 constのスキーマ= mongoose.Schema。 CONST TaskSchema =新しいスキーマ({ ID:{タイプ:Number}、 テキスト:{タイプ:文字列}、 タイプ:{タイプ:文字列}、 進捗:{タイプ:Number}、 オープン:{型:Boolean}、 START_DATE:{タイプ:文字列}、 OWNER_ID:[{タイプ:文字列}]、 持続時間:{タイプ:Number}、 親:{タイプ:Number} })。 mongoose.model( "タスク"、TaskSchema)を返します。 }。
配備します
Egg.js枠組み構築された卵のクラスタは、もはや、十分に安定したプロセスのマスター、マスターを起動しないように保護者のPM2モジュールとしてプロセスを使用する必要があります。唯一の2つのコマンド:
#サービス開始 NPMスタート #は、サービス閉じる NPMの実行停止を
エピローグ
私たちの開発効率が倍になるように、巨人の肩の上、それでもあなたが学ぶためにKoa2で始まることを示唆し、その後Egg.jsを比較するために、あなたが最後にそれを知っているだろうことは私たちに多くの努力を保存したものを、物事、カプセル化し、私たちは、プラグイン開発Egg.js理解するをバックアップしていきます。