Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.05.2016, 14:37
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 17.05.2016, 15:19
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Присоединяюсь к вопросу. Я себе завел синглтон с константами, но их видно только в рантайме.
Ответить с цитированием
  #3 (permalink)  
Старый 17.05.2016, 15:30
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Что такое рантайм???
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #4 (permalink)  
Старый 17.05.2016, 17:56
Аватар для kolka
Кандидат Javascript-наук
Отправить личное сообщение для kolka Посмотреть профиль Найти все сообщения от kolka
 
Регистрация: 07.06.2010
Сообщений: 146

Так а в чем проблема брать из синглтона ?
ExtJS Globals in MVC Example

Последний раз редактировалось kolka, 17.05.2016 в 18:02.
Ответить с цитированием
  #5 (permalink)  
Старый 17.05.2016, 18:07
Аватар для kolka
Кандидат Javascript-наук
Отправить личное сообщение для kolka Посмотреть профиль Найти все сообщения от kolka
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 17.05.2016, 18:14
Аватар для kolka
Кандидат Javascript-наук
Отправить личное сообщение для kolka Посмотреть профиль Найти все сообщения от kolka
 
Регистрация: 07.06.2010
Сообщений: 146

Вот еще статейка на эту тему
Ответить с цитированием
  #7 (permalink)  
Старый 18.05.2016, 11:14
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 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,

	...

});
Ответить с цитированием
  #8 (permalink)  
Старый 18.05.2016, 12:10
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Кстати, напомню, что нужно чтобы значение глобальных констант зависело от режиме сборки: production, development, и т.п.

Кроме //<debug> есть что-то более внятное?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #9 (permalink)  
Старый 18.05.2016, 21:20
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 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"
    ]
}


При таком подходе вам никогда не нужно будет мучаться головной болью от глобальных констант, случайно протёкших в боевую сборку.
Ответить с цитированием
  #10 (permalink)  
Старый 19.05.2016, 13:47
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определить элемент под перетаскиваемым элементом slavaspirit Элементы интерфейса 3 26.07.2015 01:49
Константы, ущербности учебников и годные статьи 2chan Общие вопросы Javascript 11 17.10.2014 01:13
Карта города на сайте (где пользователь может указать себя) zebra741258963 Библиотеки/Тулкиты/Фреймворки 0 10.05.2012 03:12
Определить выбор изображения tarya jQuery 0 02.08.2011 01:11
определить где курсор olgatcpip Общие вопросы Javascript 5 27.04.2010 09:59