2016-12-05 70 views
0

因此,我以下面的方式设置了我的Aurelia应用程序,并且我想要将所有模块和依赖项导入Main.js中,并且仍然能够在像Start.js这样的模块中注入依赖项。我也想显示一个等待所有内容加载的启动画面。这有可能吗?如何使用Aurelia加载Main.js中的所有依赖关系?

main.js

import 'bootstrap'; 
    // TODO: Import all modules here 
    // import {inject} from "aurelia-framework"; 
    // import {PortalData} from "./portalData"; 

    object export function configure(aurelia){   

      aurelia.use 
       .standardConfiguration() 
       .developmentLogging(); 

      // start aurelia and navigate to app.html/app.js 
      aurelia.start().then(a=> a.setRoot());   
     } 

app.js

export class App { 

    // aurelia convention 
    configureRouter(config, router) 
    { 
     this.router = router; 

     config.map([     
      { 
       route:["", "home"], 
       moduleId:"./start", 
       title:"SevaLink", 
       nav:true 
      } 

start.js

import {inject} from "aurelia-framework"; 
    import {PortalData} from "./portalData"; 


    @inject(PortalData) 
    export class Start { 

     constructor(portalData){ 
      this.portalData = portalData; 
     } 


     activate(){ 
      return this.portalData.getApplications() 
       .then(apps => this.applications = apps); 
     }  
    } 

回答

4

您可以导入所有依赖的应用程序中的任何模块中。不过,我不确定那样做会怎样。这只会让你的应用程序启动速度变慢,并不会带来任何好处。 Aurelia对模块使用延迟加载。如果你想在启动时加载你的应用程序的所有代码,只需捆绑应用程序。

+0

我在所选模块中使用jQuery和Velocity并非全部。所以我希望能够在一个中心位置写入一次导入语句,而不是在每个模块中重复。我已经捆绑了一切。 – puri

+0

这不是模块如何工作。当你使用模块时,你必须导入每个模块,无论你打算使用它。如果你想在全球有东西可用,那么你必须将它附加到全局或窗口对象。 –

+0

我想我已经在Angular 2的根模块中看到类似这样的东西,他们通过约定将它称为AppModule。但我可能也有错误的想法。 – puri

相关问题