Показать сообщение отдельно
  #1 (permalink)  
Старый 21.03.2014, 19:51
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Как вы пишите свои библиотеки?
Наверное каждый когда-либо писал свою библиотеку всяких нужных и не очень функций. Я изучаю js, поэтому тоже вот потихоньку пишу всякие плюшки и чета их стало много. Решил оформить все в виде библиотеки, чтобы не захламлять глобальное пространство. Выглядит это так:
var GLIB = (function(){
var $G = {};

$G.scroll = function(){
	/*****/
};

$G.serialize = function(){
	/*****/
};

// и т.д. и т.п...

return $G;
}());


Однако теперь столкнулся с проблемой захламления пространства самой библиотеки.
Ну к примеру написал я некий модуль, который делает ajax запросы. У него есть настройки по дефолту, функция установки настроек, непосредственно функция отправки запросов и т.д... То есть модуль состоит из нескольких функций:

var GLIB = (function(){
var $G = {};

/*** Ajax ***/

$G.ajax = function(){/* делает запросы и выполняет заданные функции */};

$G.ajaxSetup = function(){/* установка глобальных опций */};

$G.ajaxSetting = {/* дефолтные настройки */};

/*** Other ***/

$G.scroll = function(){/*****/};

$G.serialize = function(){/*****/};

// и т.д. и т.п...

return $G;
}());


Проблема в том, что в составе модуля не все функции должны быть расшарены наружу. Например объект $G.setting не должен быть доступен для прямой записи в него. Значит что? значит нужно
// вместо
$G.ajaxSetting = {};
//сделать
var ajaxSetting = {};

Все, наружу эта переменная не доступна, но она теперь захламляет пространство внутри библиотеки...
Короче я уже не знаю, как лучше оформить свою библиотеку, чтобы и имена переменных были короткие, и чтобы потом не было конфликтов внутри.
Ответить с цитированием