在任何大小的TypeScript应用程序中,您可能最终会得到很多模块。根据我迄今为止的经验,这导致导入语句如下:import { x } from '../../../y/z'
Angular 2有一个很好的解决方法:通过index.ts / index.d.ts
文件导出文件夹中的所有模块。
我已经开始自己使用它们,因为它可以清理足够的进口以使其值得。我一直很好奇的是创建一个工具来自动从目录中抓取文件名并在其中删除.d.ts
文件。我在网上看到的其他内容都没有表明这是任何人都尝试过的。
所以,我的问题是:写这样的东西是否存在技术限制,我还没想到呢?
我对该工具的想法是用户会删除index.ts
文件,如果工具找到它,它将确保导出全部更新,以指向该目录中任何导出的模块向下。 / p>
我将在接下来的几天内开始尝试这一点,但在我做之前想要一些更有经验的输入 - 如果可能的话。
谢谢!
答案 0 :(得分:0)
这并没有真正回答你的问题,但它可能有助于决定是否构建这样的工具。
我对Angular 2很新,但以下内容帮助我避免使用“../../../”类型的import语句。
/app
/core
/network
/storage
index.ts
core.module.ts
/resources
/user
resources.module.ts
/shared
/utilities
shared.module.ts
如果我们以核心目录为例:
在core.module.ts中,我会输入:
import { StorageService } from './storage/storage.service';
在app / core / index.ts中我会做一个桶来导出组件会使用的服务(例如):
export * from './network/client.service';
export * from './storage/storage.service';
然后从任何其他地方(例如在app / resources / user中使用用户服务)我会导入我需要的内容
import { ClientService, StorageService } from 'app/core';
这个想法基本上只是将相对导入用于当前模块的更深层次,而将“绝对”导入用于从兄弟目录(模块)导入。
到目前为止,这使我的进口保持清洁,易于阅读和推理。我知道桶进口的顺序存在问题,但我不确定它的细节。
注意:这是使用Webpack和Typescript配置为使用“绝对”路径导入。