我正在尝试在TypeScript中创建一个大角度应用程序,我希望我的应用程序使用以下文件夹结构进行布局:
./应用
--- 控制器
--- --- HomeController.ts
--- --- SomeOtherController.ts
--- 指令
--- --- MyDirective.ts
--- app.ts
我还希望布局命名空间/模块,以便所有控制器都在MyApp.Controllers命名空间中。所以在上面的例子中,我在模块中有2个控制器:
MyApp.Controllers.HomeController
MyApp.Controllers.SomeOtherController
我设置了以下内容:
HomeController.ts :
export module MyApp.Controllers {
export class HomeController {
...
}
}
SomeOtherController.ts
export module MyApp.Controllers {
export class SomeOtherController {
...
}
}
现在在app.ts中我想导入我的所有控制器,这就是我遇到问题的地方,我试试:
import * as Controllers from './controllers/HomeController'
然后访问我必须做的控制器:
Controllers.MyApp.Controllers
哪个很难看。另外,我如何从其他文件中获取控制器?理想情况下,我想导入名称空间“MyApp.Controllers”中的所有内容,我们可以使用它而无需在代码中添加MyApp.Controllers前缀。
答案 0 :(得分:3)
你必须摆脱像C#/ Java这样的语言的思维方式,你可以使用命名空间来组织代码。 如果使用打字稿,则可以使用类似于文件系统的方法来组织代码,其中文件系统包含文件夹和文件。
export module
。因此,在删除export module
之后,您将使用这样的控制器:
import {HomeController} from './controllers/HomeController'
希望这有帮助。
答案 1 :(得分:0)
我不知道如何摆脱丑陋的" Controllers.MyApp.Controllers,您必须在其中指定完全限定的命名空间+名称。
现在,恕我直言(以我的拙见),我认为没有什么"丑陋"对这个。 如果从其他名称空间引用名称,则只需要完全限定名称。但是如果从同一名称空间引用它,则不需要全名。有意义吗?
此外,我更喜欢将所有引用添加到单个.TS文件(例如Reference.ts),并将Reference.ts文件添加到任何地方。此参考文件以排序方式引用项目中的所有.TS文件(因此编译器可以从上到下正确编译)。