Sencha Touch - Профиль устройства
В современном мире технологий у нас есть несколько устройств, таких как мобильные, планшеты, настольные компьютеры и ноутбуки с экранами разного размера. Следовательно, существует необходимость в разработке приложений, доступных со всех устройств, с хорошим внешним видом. Однако разработка разного кода для разных устройств требует очень много времени и затрат.
Sencha Touch помогает нам в этом, предлагая функцию профиля устройства. В зависимости от активного профиля будут запущены и применимы различные зависимости.
Мы можем объявить профиль устройства при написании кода приложения. У нас может быть несколько устройств как -
Ext.application({
name: 'MyApp',
profiles: ['Phone', 'Tablet']
});
Как только это будет сделано, профили будут загружены как -
- MyApp.profiles.Phone.js
- MyApp.profiles.Tablet.js
Написание простого телефонного профиля
Ext.define('Mail.profile.Phone', {
extend: 'Ext.app.Profile',
config: {
name: 'Phone',
views: ['phoneView']
},
isActive: function() {
return Ext.os.is('Phone');
}
});
Написание простого профиля планшета
Ext.define('Mail.profile.Tablet', {
extend: 'Ext.app.Profile',
config: {
name: 'Tablet',
views: ['tableView']
},
isActive: function() {
return Ext.os.is('Tablet');
}
});
Как видно из профиля, у нас есть функция isActive, которая определяет, активно ли конкретное устройство. Если устройство активно, соответствующие зависимости будут загружены и созданы.
Как упоминалось в приведенном выше примере, если мы используем телефонное устройство, функция isActive профиля телефона вернет true и будут загружены зависимости, связанные с телефонным устройством; здесь будет загружен phoneView. Если устройством является планшет, то функция isActive профиля телефона вернет false, а функция isActive профиля планшета вернет true, и будет загружена зависимость tabletView.
Запуск процесса
Здесь следует отметить еще один момент: когда у нас есть профили в приложении, загрузка и создание экземпляра кода приложения будут происходить в следующем порядке:
- Сначала создаются экземпляры контроллеров и загружается функция инициализации каждого контроллера.
- Будет вызвана функция запуска профиля.
- Будет вызвана функция запуска приложения.
И профиль, и функции запуска приложения являются необязательными, поэтому, если мы не определим ни одну из них, они не будут вызваны.
Взгляните на следующий код, чтобы проверить, где и как могут быть определены различные функции запуска и инициализации.
Функция инициализации контроллера
Ext.define('MyApp.controller.Main', {
extend: 'Ext.app.Controller',
init : function (){
Ext.Msg.alert('Controller's init method');
},
config: {
refs: {
tab: '#divId
}
}
});
Функция запуска профиля
Ext.define('Mail.profile.Tablet', {
extend: 'Ext.app.Profile',
config: {
name: 'Tablet', views: ['tableView']
},
isActive: function() {
return Ext.os.is('Tablet');
}
launch : function() {
Ext.Msg.alert('profile's launch function');
}
});
Функция запуска приложения
Ext.application({
name: 'Sencha', launch: function() {
Ext.Msg.alert(Application's launch function);
}
});