2017-07-28 104 views
0

问题是如何组织Angular 4项目中的文件和文件夹以便能够轻松移动它们。 现在我正在尝试这样。Angular 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 
│ 

我index.ts文件在出口 如果我决定移动 服务/ api.service.ts到 服务/ API服务的每一个逻辑文件夹容器/ api.serivce.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 *,因为角度的编译器。 那么到处都需要重新导出东西?

主要想法是将某些东西迁移到某处时是安全的,在本例中我使用打字稿桶,但也许有更好的方法? 任何想法?

回答

1

我会建议你这两种方法之一(或两者一起)取决于你实际寻找什么。

使用索引导出模式,这意味着对于每个文件夹,您创建一个索引文件,导出该范围内的文件,从最深层开始,因此在某些时候,您最终可能会引用模型文件夹,通过打字稿

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

映射路径,这样就可以获得绝对路径,当你移动sctucture或重命名文件夹,只有一个地方可去和修改:从那里实体,以便在同一行,你可以这样做。去这种方法,我建议您访问以下链接:

How to use paths in tsconfig.json

和指向该文档在这里:

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

可以将两种方法结合在一起

希望它有帮助

+0

我已经更新了这个问题。 比方说我们在tsconfig.json建立路径 “路径”:从 ,并在多个地方使用'进口{} ApiService:{[ “核心/ *”], “核心/ *”} '核心';例如,'core'移动到'npm'中的单独软件包之后的“ ”。在这种情况下,我将改变对引用''core/*“的引用:[”node_modules/@ projectName/api“]' 或者保留核心文件夹和'core/index.ts'文件, @ PROJECTNAME/api'。 你能举个例子吗? – Varuzhan

+0

正如我之前提到的,如果您将文件夹移动到另一个地方,您只需更新映射ts配置上的绝对路径,就是这样。它很简单,你总是知道你在哪里指向并改变它,而不需要深入代码。如果你将它和索引混合在一起,甚至更好,因为即使你重命名或者改变了里面的结构文件夹,如果你的绝对路径指向了主索引,你只需要更新那个文件夹名称就可以了,代码中需要进行更改。 –