2014-09-05 1 views
-1

저는 Openui5 포털을 통해 개발하고 있습니다. 내 포털에는 2 개의 앱이 있습니다. 나는 내가 폴더에 코드를 정리 한 :같은 이름의로드 기능은 어떻게 되나요?

root 
    | 
    |____app1 
    |____app2 

을 내가 함수 된 getInfo()와 APP2에 util1.js이 APP1 폴더에서 나는 기능 된 getInfo() (같은 이름)와 util2.js이 folter. 이제

내 포털, 루트에 로그인 할 때, 모든 하위 폴더에있는 모든 JS에게 파일을로드하고, 마지막로드 된 getInfo() 함수 작업

내가 동적으로 JS를로드하는 미래의 생각 (??? 올바른) appX 파일은 사용자가 appX에 입력 한 경우에만 표시됩니다. 이렇게하면 올바르게 작동합니까 ??

+0

그래서 당신이 덮어 쓰는 JS 기능. 그 질문은 또 뭐야? – Justinas

답변

2

getInfo 기능을 전역으로 설정하지 마십시오. (이것은 당신은 그들 중 하나가 글로벌 네임 스페이스가 매우 혼잡입니다했다하더라도 좋은 조언이 될 것입니다.)

는 대신, 이상적으로, 객체 아마도 Apps라는 포털의 앱을위한 하나의 세계를 . 그런 다음 각 앱이 해당 객체에 속성으로 추가되도록합니다 (앱 이름 사용). 그래서 :

portal.js :

var Apps = {}; 

app1.js :

Apps.App1 = { 
    getInfo: function() { 
     // ... 
    }, 
    somethingElse: function() { 
     // ... 
    } 
    // ...and so on... 
}; 

app2.js :

Apps.App2 = { 
    getInfo: function() { 
     // ... 
    }, 
    somethingElse: function() { 
     // ... 
    } 
    // ...and so on... 
}; 

또는 당신은 더 나아가 앱 등록 기능이있을 수 있습니다

portal.js :

var MyPortal = { 
    apps:  {}, 
    register: function(name, app) { 
     if (this.apps.hasOwnProperty(name)) { 
      throw new Error("There is already an app called '" + name + "' registered."); 
     } 
     this.apps[name] = app; 
    } 
}; 

app1.js :

MyPortal.register("App1", { 
    getInfo: function() { 
     // ... 
    }, 
    somethingElse: function() { 
     // ... 
    } 
    // ...and so on... 
}); 

app2.js :

MyPortal.registerApp("App2", { 
    getInfo: function() { 
     // ... 
    }, 
    somethingElse: function() { 
     // ... 
    } 
    // ...and so on... 
});