While the standard solution is to use something like ember-app-kit or ember-cli, which use a custom resolver to eliminate the need for a global namespace like App, it is possible to get Ember to work with RequireJS without using a custom resolver. You just have to pass around the global namespace.
First, create an app.js:
define([
"ember"
], function(Ember) {
var App = Ember.Application.create();
App.deferReadiness();
return App;
});
Then define your router like this:
define([
"ember",
"app"
], function(Ember, App) {
App.Router.map(function () {
this.route('someRoute');
// ...
});
return App.Router;
});
And your files like this:
define([
"ember",
"app"
], function(Ember, App) {
App.SomeRoute = Ember.Route.extend({
// ...
});
return App.SomeRoute;
});
Then in your main.js:
(function(root){
require(["config"], function(config){
requirejs.config(config);
require([
"app",
"models/someModel",
"models/store",
"adapters/someAdapter",
"controllers/someController",
"views/someView",
"router",
"routes/someRoute",
// ...
], function(App) {
App.advanceReadiness();
});
});
})(this);