Я не уверен, что это лучшая практика, но я знаю, что это работает на ExtJs 4.0.7.
Так, например, у меня есть следующая структура папок:
proj
index.htm
proj
app.js
app
view
SimpleIFrame.js
Итак, в app.js у меня есть следующий код:
Ext.Loader.setConfig(
{
enabled: true
});
Ext.Loader.setPath('proj.view', './proj/app/view');
Ext.Loader.require([
'proj.view.SimpleIFrame'
])
В SimpleIFrame у меня есть следующий код:
Ext.define('proj.view.SimpleIFrame', {
extend: 'Ext.Panel',
alias: 'widget.simpleiframe',
...
});
Итак, позже в app.js я могу сделать следующее:
var panel = Ext.create('adminClaiming.view.SimpleIFrame', {
title: 'Hello',
...
});
Это позволяет мне разделить весь app.js на отдельные файлы. До тех пор, пока я не понял это, я продолжал получать страшные:
Uncaught TypeError: object is not a function
Что означало, что я забыл вызвать Ext.Loader.setPath.
Теперь не указывайте мне этот следующий бит, но кажется, что если вы удалите Ext.require , тогда SimpleIFrame.js будет загружен в глобальное пространство имен, что на самом деле не то, что вам нужно, но он все еще загружен и работает, что более важно.
Надеюсь, это поможет. И заметьте, я, скорее всего, буду неправ;) и только что повезло в моем случае; что я могу сделать, я все еще n00b.