2017-07-28 11 views
0

Angular 4プロジェクトでファイルとフォルダを整理して、簡単に移動できるようにする方法です。 今私はこのようにしています。角度のある4つの簡単なフォルダ構造の変更アーキテクチャ

├───core 
│ │ core.module.ts 
│ │ index.ts 
│ │ 
│ ├───models 
│ │ │ index.ts 
│ │ │ 
│ │ ├───api 
│ │ │  api-response-list.interface.ts 
│ │ │  api-response.interface.ts 
│ │ │  index.ts 
│ │ │  page-search-params.interface.ts 
│ │ │ 
│ │ └───auth 
│ │   auth-token.interface.ts 
│ │   index.ts 
│ │   token-type.type.ts 
│ │ 
│ └───services 
│   api.service.ts 
│   auth-token.service.ts 
│   auth.service.ts 
│   crud.service.ts 
│   index.ts 
│   local-storage.service.ts 
│ 

私は サービスに サービス/ api.service.tsを移動することを決定した場合、私は、API-サービス/ api.serivce.ts /フォルダ を をエクスポートするすべての論理フォルダコンテナにindex.tsファイルを持っている私は、 index.ts内の参照のみを変更し、このサービスを使用する他のパーツは変更されません。

//core/models/api/index.ts 
    export { APIResponse } from './api-response.interface'; 
    export { APIResponseList } from './api-response-list.interface'; 
    export { PageSearchParams } from './page-search-params.interface'; 

-

//core/models/auth/index.ts 
    export { AuthToken } from './auth-token.interface'; 
    export { TokenType } from './token-type.type'; 

-

//core/models/index.ts 
    export { AuthToken, TokenType } from './auth'; 
    export { APIResponseList, APIResponse, PageSearchParams } from './api'; 

- ここ

//core/index.ts 
    export { ApiService, CRUDService } from './services'; 
    export { CoreModule } from './core.module'; 
    export { AuthToken, TokenType, APIResponseList, APIResponse, PageSearchParams } from './models'; 

ため、私は、角コンパイラのexport *を使用することはできません。 どこでも私は物事を再輸出する必要がありますか?

主なアイデアは、何かをどこかに移行するときに安全であることです。この例では、typescriptバレルを使用していますが、もっと良いアプローチがありますか? アイデア

答えて

1

あなたが実際に探しているものに応じて、この2つのアプローチのいずれか(またはその両方)をお勧めします。

インデックスエクスポートパターンを使用します。つまり、すべてのフォルダに対して、そのスコープ内のファイルをエクスポートするインデックスファイルを作成します。最も深いレベルから上に移動します。したがって、ある時点でモデルフォルダを参照し、あなたは絶対パスを取得するようtypescriptですによって

import { AuthToken, TokenType.... } from './models/index'; // you don't necessary need to point to index but to the folder. 

マッピングパスとあなたがsctuctureを移動したり、ただ一つの場所にフォルダの名前を変更するときに行くと変更する:そこからエンティティは、1行にして、次のような操作を行うことができます。

How to use paths in tsconfig.json

、ここでドキュメントへのリンク:

https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping

することができます。このアプローチのために行くために、私はあなたがこのリンクを訪問することをお勧め両方のアプローチを組み合わせる

希望します。

+0

I'vが質問を更新しました。 {:[ "コア/ *"] "コア/ *"} と複数の場所で 'インポート{ApiService}から使用されている は、我々はtsconfig.jsonに "パス" パスを設定していると言うことができます'コア'; 'core'を' npm'で別のパッケージに移動した後です。この場合、リファレンスを '' core/* ''に変更します:["node_modules/@ projectName/api"] ' またはコアフォルダと' core/index.ts'ファイルの中に ' @ projectName/api'と入力します。 例を挙げてください。 – Varuzhan

+0

前にも述べましたが、フォルダを別の場所に移動すると、マッピング設定の絶対パスを更新するだけで済みます。それだけです。シンプルで、コードを掘り下げることなく、どこを指して変更しているのかを常に知ることができます。それをインデックスと混在させると、構造フォルダを内部で名前を変更したり変更したりしても、絶対パスがメインインデックスを指している場合は、新しいフォルダ名とコード内で変更が必要です。 –

関連する問題