Представьте, у вас есть проект, состоящий из нескольких модулей и, например, jQuery или любая другая библиотеки в CDN. У вас есть огромное желание не показывать пользователю ваши глобальные переменные и по возможности не показывать jQuery и $. Ну и, конечно, сделать все без изменения кода проекта.
Причины для сокрытия глобалов могут быть разные: для красоты, из соображений безопасности, для затруднения анализа кода и другие. Пользователь взаимодействует с вашим кодом, используя события, которые он не сможет сломать — больше ему ничего и не нужно.
Самый очевидный способ — создать единственный namespace в который пассивно экспортировать прочие объекты, а jQuery и $ в конце удалить.
После сборки код будет какой-то такой:
Это идеальный вариант, но чаще бывает не так. Посмотрите ваш код, такой ли он?
Под катом универсальное решение, позволяющее собрать любой код без единой глобальной переменной.
Причины для сокрытия глобалов могут быть разные: для красоты, из соображений безопасности, для затруднения анализа кода и другие. Пользователь взаимодействует с вашим кодом, используя события, которые он не сможет сломать — больше ему ничего и не нужно.
Самый очевидный способ — создать единственный namespace в который пассивно экспортировать прочие объекты, а jQuery и $ в конце удалить.
После сборки код будет какой-то такой:
(function(window, undefined){
// include ./js/YourNamespace.js
var YourNamespace = (function () {
// что-то ещё
return {};
}());
// include ./js/YourNamespace/SomeObject.js
YourNamespace.SomeObject = (function () {
// что-то ещё
return function () {
};
}());
// Cleanup
delete window.$;
delete window.jQuery;
}(window));
Это идеальный вариант, но чаще бывает не так. Посмотрите ваш код, такой ли он?
Под катом универсальное решение, позволяющее собрать любой код без единой глобальной переменной.