这真的不是一个Aurelia问题,这是一个与作为ES2015的一部分(因此是TypeScript的一部分)的import
语句,您选择的模块加载程序及其配置方式有关的问题,也是您自己的选择构建您的代码库。
您的模块加载器会读取您在import
语句中使用的模块名称,例如'aurelia-framework'
或'../resources/custom-elements/date-picker'
。
目前,没有浏览器直接支持这些import
语句,因此我们利用各种模块加载器来处理此任务。一些例子是RequireJS,SystemJS或者你可以在Webpack世界中使用的各种加载器。这些提供了一些提供友好模块名称的能力。通常,这些自定义名称仅针对通过依赖关系管理器(例如NPM或JSPM)安装的应用程序的依赖性进行配置。这些友好名称以某种方式配置。
在SystemJS中,有一个config.js
文件(或0.17
beta中的jspm.configjs
)。这个文件可以被修改以提供你自己友好的模块名称。尽管这可能是有风险的,因为JSPM是建立在它拥有该文件的假设之上的,因此它可能会覆盖您在其中所做的任何更改。
在使用RequireJS的Aurelia CLI中,可以在aurelia.json
文件中对其进行设置。这个文件被CLI覆盖的机会比JSPM更少,但它可能会发生。
所有这些被说,我不打算在这个答案中提供这些例子,因为这个问题的更好的答案是相当内省:如果你不喜欢在导入时不断输出长路径模块,那么您需要重新考虑您的深度嵌套项目组织。通过展开项目的源代码,您可能可以实现相同的目标,而无需冒险创建自定义配置。
这是一个很好的答案,与我写的很好地配对。这样做的一个缺点是,所有的模型都会在第一次导入'models'模块时加载。在一个足够大的应用程序中,这可能会导致问题。如果您想将您的应用程序拆分为多个功能单独的功能块,这也会导致问题。 –
是的!它可以使事情变得更容易,但应该小心使用。 –
感谢您的解决方案,@FabioLuz!这正是我所寻找的,我会小心这个缺点;) –