2014-12-25 5 views
0

[자바 스크립트에 대한 초보자이기 때문에 속도가 느려집니다.]플러그인 용 자바 스크립트 패턴?

나는 plugins 목록이있는 node.js의 응용 프로그램을 만들고 있습니다. 각 "플러그인"은 문자열을 취할 수있는 함수 (또는 2) 여야합니다. 앱은 각 플러그인을 차례로 호출하여 문자열을 전달해야합니다. 결과에 따라 플러그인 등에서 다른 함수를 호출 할 수 있습니다 ...

자바 스크립트에서 이것을 설계하는 가장 좋은 방법은 무엇입니까? 모든 플러그인을 개발할 때 추가하도록 앱을 수정하지 않아도되지만,이 작업을 많이하지 않아도됩니다.

지금 당장 나는 모든 모듈에 대한 모듈을 만든 다음 기본 응용 프로그램 내에서 "요구"하고 함수를 호출하는 것으로 생각하고 있지만 몇 가지 이유로 단정 할 것 같습니다 (a) 부모 응용 프로그램을 변경해야합니다. (b) 플러그인에 적용 할 수있는 인터페이스가 없습니다. 나는 플러그인을 존중하도록 강제 할 수있는 일종의 계약이 있기를 바랬다.

답변

1

list the plugin directory 수 있으며 각 파일이 필요합니다. 각 파일이 기존 객체 (예 : myapp.plugins)에 함수를 추가하면 객체는 forEach이고 각 함수를 호출 할 수 있습니다. AST 파서를 호출하는 것과 같은 이상한 일을하지 않고도 코드에서 계약을 시행 할 수는 없습니다. 플러그인에서 단위 테스트를하는 것이 더 효과적입니다.

편집 : 각 파일 (말하자면 myapp.plugins)을 기존 객체에 함수를 추가하는 경우, 당신은 단지 객체를 foreach는 수 "각 함수를 호출 :

는이 부분에 약간의 정교한 . "

var invokePlugins = function() { 
    var args = arguments.slice(0); 
    myapp.plugins.forEach(function(plugin) { 
    plugin.apply(plugin, args); 
    }); 
} 
invokePlugins("this", "gets", "passed to", "each plugin"); 

귀하의 구조는 불분명하다, 그래서 이것은 당신이 무엇을 할 수 있는지 단지 매우 거친 생각입니다.

+0

"이 파일은 기존 파일 (예 : myapp.plugins)에 함수를 추가하면 단지 forEach 객체를 가져 와서 각 함수를 호출 할 수 있습니다." – Mike

+0

수정 해 주셔서 감사합니다. – Mike