
17.05.2016, 14:37
|
 |
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
|
Глобальные константы, где их определить?
Мне нужна глобальная константа
var SERVER_URL_PREFIX = "http://localhost:3000";
но где ее прописать, чтобы она была видна везде?
в Application.js не вышло дело. В моделях не видно.
в app.js тоже самое, этот файл похоже вообще последний в списке сборки.
Идеально было бы в app.json, но какая директива отвечает за это? И есть ли такая вообще?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|

17.05.2016, 15:19
|
 |
Профессор
|
|
Регистрация: 06.06.2014
Сообщений: 292
|
|
|
Присоединяюсь к вопросу. Я себе завел синглтон с константами, но их видно только в рантайме.
|
|

17.05.2016, 15:30
|
 |
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
|
Что такое рантайм???
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|

17.05.2016, 17:56
|
 |
Кандидат Javascript-наук
|
|
Регистрация: 07.06.2010
Сообщений: 146
|
|
Так а в чем проблема брать из синглтона ?
ExtJS Globals in MVC Example
Последний раз редактировалось kolka, 17.05.2016 в 18:02.
|
|

17.05.2016, 18:07
|
 |
Кандидат Javascript-наук
|
|
Регистрация: 07.06.2010
Сообщений: 146
|
|
Или вариант другой.. я использую так:
Ext.define('MyApp.util.Config', {
singleton : true,
config : {
debug : true
},
constructor : function(config) {
this.initConfig(config);
this.callParent([config]);
}
});
ну и где нужно делаем require, используем..
MyApp.util.Config.getDebug();
Последний раз редактировалось kolka, 17.05.2016 в 18:11.
|
|

17.05.2016, 18:14
|
 |
Кандидат Javascript-наук
|
|
Регистрация: 07.06.2010
Сообщений: 146
|
|
|
|
|

18.05.2016, 11:14
|
 |
Профессор
|
|
Регистрация: 06.06.2014
Сообщений: 292
|
|
Мда... Я явно что то делал не так. Вот попробовал по этим статьям, и все работает. Но тем не менее точно помню что была некая проблема из-за которой я не смог использовать константы на этапе сборки. Ну ок, может еще вспомню что там было. А сейчас оно работает так:
Завожу синглтон
Ext.define('SafetyRound.util.Constants', {
singleton: true,
alternateClassName: 'Constants',
ui: 'rib-panel-embedded'
});
Подключаю его в апликейшене
Ext.define('SafetyRound.Application', {
extend: 'Ext.app.Application',
name: 'SafetyRound',
requires: [
'SafetyRound.util.Constants'
]
});
И использую где надо
Ext.define('SafetyRound.view.projectinfo.Main', {
extend: 'Ext.tab.Panel',
ui: Constants.ui,
...
});
|
|

18.05.2016, 12:10
|
 |
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
|
Кстати, напомню, что нужно чтобы значение глобальных констант зависело от режиме сборки: production, development, и т.п.
Кроме //<debug> есть что-то более внятное?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|

18.05.2016, 21:20
|
 |
Профессор
|
|
Регистрация: 21.05.2015
Сообщений: 321
|
|
Глобальные приложения, включая константы, это не тот инструмент, который я стал бы использовать в своих приложениях. Лучше используйте override.
Если ваш код выглядит примерно так:
Ext.define('My.app.Proxy', {
extend: 'Ext.data.proxy.Ajax',
alias: 'proxy.myproxy',
url: '/production/url'
});
Ext.define('My.app.Store', {
extend: 'Ext.data.Store',
proxy: 'myproxy'
});
Тогда можно добавить override, который будет включаться только в dev и testing сборках:
Ext.define('My.app.debug.Proxy', {
override: 'My.app.Proxy',
url: '/dev/url'
});
Самый простой способ включить такие override в отдельные сборки приложения, это держать файлы override в отдельной директории, которая включается только в нужных сборках через app.json:
"development": {
"overrides": [
"${app.dir}/debug-overrides"
]
},
"testing": {
"overrides": [
"${app.dir}/debug-overrides"
]
}
При таком подходе вам никогда не нужно будет мучаться головной болью от глобальных констант, случайно протёкших в боевую сборку.
|
|

19.05.2016, 13:47
|
 |
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
|
Цитата:
|
|
Глобальные приложения, включая константы, это не тот инструмент, который я стал бы использовать в своих приложениях. Лучше используйте override.
|
А я и не знал что такое возможно делать. Надо попробовать. Спасибо!
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
|
|