Важный disclaimer: не изучайте RequireJS, уже есть нативные модули, которые совсем скоро будут доступны прямо в браузерах и nodejs.
Почитайте про область видимости в JS:
https://learn.javascript.ru/functions-closures
https://developer.mozilla.org/ru/docs/Web/JavaScri...
Нельзя просто объявить переменную в модуле и ждать, что она будет доступна в другом. В этом и есть смысл модулей. Надо этот модуль явно импортировать. В вашем случае будет как-то так:
//main.js
requirejs.config({
paths: {
"app": "modules/app",
"dom": 'modules/dom'
}
});
require(['app'], function (app) {
app.color();
});
//dom.js
define([], function() {
return document.querySelector('body');
})
//app.js
define(['dom'], function (dom) {
var app = {
color: function () {
dom.style.background = 'red';
}
};
return app;
});