Requiere JS, Dependencias circulares y método "mágico" de exportaciones
He estado tratando de configurar RequireJS para manejar dependencias circulares usandoel módulo mágico especial 'exportaciones' según lo recomendado porLa respuesta de James Burke aesta pregunta.
Siguiendo el ejemplo dado por @jrburke en esa pregunta:
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;
});
El problema es que usando su propio ejemplo, elexports
el módulo no está definido y, por lo tanto,exports.Employee
yexports.Company
no establecer Si trato de incluir exportaciones como un argumento de las funciones de devolución de llamada definidas, simplemente se inicializa en ambos casos como vacío y no lleva las funciones de constructor que le fueron asignadas.
¿Qué estoy haciendo mal?
EDITAR: A través de prueba y error, obtuve el código anterior trabajando en:http://jsfiddle.net/jpk45vow/4/. ¿Alguien puede explicarpor qué funciona, porque no tiene sentido para mí.