Afaict, Ext.require works well w / Extjs MVC. (Fwiw, I use the requires:[] configuration item as opposed to Ext.require.) In the top level of viewport.js, you can set a limited set of requirements to just require a "top level" view.
eg. let's say you have a border layout panel with two sub-panels. Viewport will require: ['topLevelView'] Then topLevelView can require: [westPanelView, centerPanelView] .
As for the instance .. afaict, app.js takes care that everything is created. (My controllers do not create views.)
As for integration with the controller ... extjs mvc way has controllers that handle events from views. The controllers use the selector of configuration requests and refs:[] components to βpostβ viewing events that they are interested in. Event handlers in the controllers perform work on updating other views (also by reference), in addition to updating / synchronizing data in any stores.
I highly recommend carefully reading the MVC architecture guide in sencha docs:
http://docs.sencha.com/ext-js/4-0/#!/guide/application_architecture
This is a pretty "simplified" example, but it seems to cover the basics of organizing applications and posting events. In addition, three parts of the MVC Application Architecture Guide are presented here:
http://docs.sencha.com/ext-js/4-0/#!/guide/mvc_pt1
Again, we strongly recommend reading.
Finally, extjs 4.x samples have working code (simple applications, but work) using the extjs MVC architecture; this should help in the application to bootstrap the code. When you download the distribution, check the examples / app / * files. There are three examples of MVC here. One of these applications:
docs.sencha.com/ext-js/4-0/#!/ Example / application / feed-viewer / feed-viewer.html
(I also cut my teeth on extjs 4 mvc .., and you need to be persistent in debugging!)