James Burke's answer에서 this question으로 권장되는 the special 'exports' magic module을 사용하여 원형 종속성을 처리하도록 RequireJS를 설정하려고했습니다. 이 질문에 @jrburke에 의해 주어진 예에 따라RequireJS, 순환 의존성 및 내보내기 "Magic"메서드
:
define("Employee", ["exports", "Company"], function(Company) {
function Employee(name) {
this.name = name;
this.company = new Company.Company(name + "'s own company");
};
exports.Employee = Employee;
});
define("Company", ["exports", "Employee"], function(Employee) {
function Company(name) {
this.name = name;
this.employees = [];
};
Company.prototype.addEmployee = function(name) {
var employee = new Employee.Employee(name);
this.employees.push(employee);
employee.company = this;
};
exports.Company = Company;
});
문제 자신의 예를 사용하여 exports
모듈이 정의되지 않은, 따라서 exports.Employee
및 exports.Company
이 없다는 것입니다 세트. 정의 콜백 함수의 인수로 내보내기를 포함 시키려고하면 두 경우 모두 비어있는 것으로 초기화되고 할당 된 생성자 함수가 전달되지 않습니다.
내가 뭘 잘못하고 있니?
EDIT : 시행 착오를 통해 위 코드가 http://jsfiddle.net/jpk45vow/4/에서 작동합니다. 누구든지 설명 할 수 있습니까 왜 그것이 작동하지 않기 때문에 그것은 나에게 의미가 있습니다.
마치 수출 모듈이 글로벌 객체가 아닌 것처럼 보입니다. 모듈을 내보내는 데 도움이되는 로컬 범위가 있습니다. 그래서 그것이 비어있는 것입니다. 실제로, 당신은 그것을 요구하거나 메인 모듈에서 사용할 필요가 없습니다. – amenadiel
예, 귀하의 의견을 읽은 후, 나에게 마법 모듈이하고있는 일은, 각 모듈 자체 컨테이너가 있다는 점을 제외하고, 아래에서 개발 한 것과 매우 유사한 컨테이너 객체를 만드는 것입니다. main이 모듈을 필요로 할 때 requireJS는 모듈 대신 컨테이너를 반환하여 모든 종속성 문제를 해결합니다. –