Сообщение от melky
|
нини.
|
Почему? Я юзаю @expose для экспорта внешних (публичных) методов либы, т.к. не надо писать убогий ['...'] (код в первую очередь должен хорошо читаться), тем более многие публичные методы юзаются внутри и я не хочу думать о том: "забыл ли я экранировать название".
Либа жмётся и нужные методы внешние, а все "издержки" 100% закрываются gzip, т.е. нет никакой разницы. Если я жму либу вместе с проектом, то пред сжатием я дополнительно вырезаю @expose (replace(/@expose/gm, '') в скрипте сборки) и всё (или написать файл экстерн, но это даст хуже сжатие).
А вот если я юзаю экспорт как ['...'], то при сжатии с проектом уже без файла экстерна не обойтись, и сжатие будет хуже.
***
Если я пишу ['...'] то это означает что всегда-всегда это свойство должно быть с таким именем.
Вот пример:
https://github.com/kobezzza/Collecti...rs.storage.jsn
Свойство Collection.Drivers.Storage должно быть доступно при использовании либы как "внешнего скрипта", но при сжатии вместе с проектом должно сжиматься, поэтому я юзаю @expose.
А свойства 'indexedDB', 'localStorage' и т.д. должны быть такими всегда, поэтому я экспортирую их в кавычках.
Например: global['Collection'] сделан так не спроста, т.к. Collection фигурирует в генерируемых скриптах в рантайме, т.е. всегда должны быть именно таким.
Разумеется я читал:
Цитата:
|
@expose should never be used in library code, because it will prevent that property from ever getting removed.
|
Но это просто напоминание: мол думайте, что делаете и всё.