Нет причин, по которым вы не можете или не должны предоставлять один и тот же модуль в разных исходных файлах. Если это имеет смысл для вашей схемы организации исходного кода, то это вполне нормально. Одна из основных причин, по которой у нас есть goog.provide()
, заключается в том, что один и тот же символ может использоваться в нескольких разных местах, но определен в том файле, который запускается первым.
Если я правильно понимаю goog.provide()
, все, что он делает, это убеждается, что объект объявлен. Итак, goog.provide('mypackage.commands) makes sure that
mypackage.commands` объявлен в глобальной области видимости.
Итак, goog.provide('mypackage.commands');
просто выполняет что-то похожее на это:
window.mypackage = window.mypackage || {};
window.mypackage.commands = window.mypackage.commands || {};
Вам нужно сделать это только тогда, когда вы планируете добавлять что-то к этому объекту в этом исходном файле. Таким образом, если несколько исходных файлов добавляют новые элементы в mypackage.commands
, то каждый исходный файл будет выполнять goog.provide('mypackage.commands
)`, чтобы убедиться, что объявлена правильная структура глобальной переменной.
Похоже, это то, что вы делаете в своем примере кода, и это совершенно нормально. Это зависит от вашего собственного понимания организации кода, лучше ли иметь несколько исходных файлов, все из которых вносят свой вклад в один и тот же объект (как у вас), или вы должны организовать свои исходные файлы таким образом, чтобы весь код, относящийся к одному конкретному пространству имен, находился в одном и том же файл. Это действительно зависит от вас и от того, как, по вашему мнению, лучше всего организовать исходный код - нет правильного или неправильного ответа, кроме того, что должна быть какая-то рифма и причина того, как он организован.
Полезная справочная статья: https://developers.google.com/closure/library/docs/tutorial
person
jfriend00
schedule
25.08.2012